我是Swift的新手,我正在开发一个应用程序,从库中选择一张实时照片并将其显示在imageview上,直到该部分工作,但是imageview位于另一个具有自定义图像的imageview之上(像背景图片)。当我点击保存按钮时,它只存储具有自定义背景的图像视图。我使用以下代码将其存储在库中:
let imageData = UIImagePNGRepresentation(myView.image!)
let compressedImage = UIImage(data: imageData!)
UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)
此代码当然是在保存按钮上。
我想要做的是让用户能够同时存储这两件事,例如:
我有一个带有星系图像背景的图像视图,在它上面我有一个显示实时照片的图像视图,所以我想将这两个东西存储到图书馆,当我在图书馆上查看它时,我会有一张带有星系背景的新实况照片。
我不知道是否有人会理解这个例子,但我认为这是我能描述问题的最好方法。
** 这是一个例子
答案 0 :(得分:0)
您需要在selectedImage
之上绘制backgroundImage
,然后保存结果。
添加UIImage
extension UIImage {
func saveImage(withImage image: UIImage) -> UIImage? {
// create image
UIGraphicsBeginImageContext(size)
draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let centeredFrame = CGRect(x: (size.width - image.size.width)/2, y: (size.height - image.size.height)/2, width: image.size.width, height: image.size.height)
image.draw(in: centeredFrame)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result
}
}
并使用它
if let newImage = backgroundImage.saveImage(withImage: userImage), let imageData = UIImagePNGRepresentation(newImage), let compressedImage = UIImage(data: imageData) {
UIImageWriteToSavedPhotosAlbum(compressedImage, nil, nil, nil)
}
其中backgroundImage
为自定义背景,userImage
为从用户库中选择的实时照片。