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 拍摄快照。