【问题标题】:How can I combine multiple overlapping UIImages into one UIImage in Swift?如何在 Swift 中将多个重叠的 UIImage 组合成一个 UIImage?
【发布时间】:2016-03-02 23:27:02
【问题描述】:

我正在创建一个应用程序,用户可以在其中从一组图像(多个)中进行选择,并将所选图像添加到所选背景。然后他们应该能够保存图像,因此我需要帮助将所有图像合并为一张以进行保存。

ViewController 有一个大的 UIImageView 作为背景。当用户选择要添加的图片时,该图片会作为子视图添加到 UIImageView 中。

//chosenImage is a UIImageView with an chosen image
backgroundImageView.addSubView(chosenImage)

我需要将图像保存为带有叠加图像的 backgroundView 的大小。

我怎样才能做到这一点?

我四处搜索,但只找到了 Obj-C 的答案和一些不起作用的答案。

对于那些寻找相同答案的人来说,这就是您在按下按钮时保存图像的方法:

@IBAction func saveImage(sender: AnyObject) {

    let snapShot:UIView = backgroundImage.snapshotViewAfterScreenUpdates(true)

    UIGraphicsBeginImageContext(backgroundImage.bounds.size)

    snapShot.drawViewHierarchyInRect(backgroundImage.bounds, afterScreenUpdates: true)

    let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()

    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)


}

【问题讨论】:

    标签: ios swift uiimageview uiimage


    【解决方案1】:

    我需要将图像保存为带有叠加图像的 backgroundView 的大小。

    你有两个选择。一种是在代码中绘制合成图像,只需将图像按照图像视图及其子视图的位置绘制到图像图形上下文中。但是,在您的情况下,一种更简单的方法是简单地 rendersnapshot 图像视图:这将有效地成为图像视图及其子视图的屏幕截图,其中正是用户所看到的。

    【讨论】:

    • 好的,太棒了。那么如何渲染或快照图像视图呢?这些对我来说都是新想法。
    • 转到 UIView 类参考并查看名为 Capturing a View Snapshot 的部分。
    • 好的,很简单。是否可以将返回的 UIView 转换为图像以便保存到相机胶卷?我不需要任何有关保存的详细信息,只需验证我将能够使用返回的内容即可。
    • 如果您渲染图像视图,您会将其渲染到上下文中。将其渲染到图像上下文中,现在您就有了 UIImage。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多