UIImage 上的 UILabel 并将该图像保存在 Swift 3 的图库中用于照片编辑应用程序
UILabel on UIImage and save that image in gallery in Swift 3 for Photo Editing App
我想在 UIImage
上添加标签,为此我使用了一个标签并使用 imgImage.addSubview(txtLabel)
在图像上添加了这个标签。现在我想将该图像保存在 Galley 中。为了保存图像,我使用了以下方法。
@IBAction func btnSave(_ sender: AnyObject) {
UIImageWriteToSavedPhotosAlbum(imgImage.image!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}
但它不会保存带标签的图像。
我怎样才能实现。
请帮忙
谢谢!
你不能在那里使用addsubview
你需要画它。这是示例代码。
UIGraphicsBeginImageContext(img1.size);
//draw image1
[img1 drawInRect:CGRectMake(0, 0, img1.size.width, img1.size.height)];
//draw label
[label drawTextInRect:CGRectMake((img1.size.width - label.frame.size.width)/2, (img1.size.height - label.frame.size.height)/2, label.frame.size.width, label.frame.size.height)];
//get the final image
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
你可以用文本渲染图像层
像这样 // imageWithLabel 处理最终图像
txtLabel.backgroundColor = UIColor.clearColor()
txtLabel.textAlignment = .Center
txtLabel.textColor = UIColor.whiteColor()
txtLabel.text = text
UIGraphicsBeginImageContextWithOptions(txtLabel.bounds.size, false, 0);
imgImage.layer.renderInContext(UIGraphicsGetCurrentContext()!)
label.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let imageWithLabel = UIGraphicsGetImageFromCurrentImageContext() // here is final image
UIGraphicsEndImageContext();
尝试:
extension UIImageView {
func makeImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0.0)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
这基本上是从您的 UIImageView
拍摄快照。
我想在 UIImage
上添加标签,为此我使用了一个标签并使用 imgImage.addSubview(txtLabel)
在图像上添加了这个标签。现在我想将该图像保存在 Galley 中。为了保存图像,我使用了以下方法。
@IBAction func btnSave(_ sender: AnyObject) {
UIImageWriteToSavedPhotosAlbum(imgImage.image!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}
但它不会保存带标签的图像。 我怎样才能实现。
请帮忙
谢谢!
你不能在那里使用addsubview
你需要画它。这是示例代码。
UIGraphicsBeginImageContext(img1.size);
//draw image1
[img1 drawInRect:CGRectMake(0, 0, img1.size.width, img1.size.height)];
//draw label
[label drawTextInRect:CGRectMake((img1.size.width - label.frame.size.width)/2, (img1.size.height - label.frame.size.height)/2, label.frame.size.width, label.frame.size.height)];
//get the final image
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
你可以用文本渲染图像层
像这样 // imageWithLabel 处理最终图像
txtLabel.backgroundColor = UIColor.clearColor()
txtLabel.textAlignment = .Center
txtLabel.textColor = UIColor.whiteColor()
txtLabel.text = text
UIGraphicsBeginImageContextWithOptions(txtLabel.bounds.size, false, 0);
imgImage.layer.renderInContext(UIGraphicsGetCurrentContext()!)
label.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let imageWithLabel = UIGraphicsGetImageFromCurrentImageContext() // here is final image
UIGraphicsEndImageContext();
尝试:
extension UIImageView {
func makeImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0.0)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
这基本上是从您的 UIImageView
拍摄快照。