swift - 如何使用此代码向图像添加水印?

标签 swift uiimage uigraphicscontext

我知道还有其他几种方法可以做到这一点;我不想导入任何我不需要的东西。如果有人可以帮助我编写他的代码,那就太好了。

目前只保存原图,不带水印图片。

extension UIImage {

    class func imageWithWatermark(image1: UIImageView, image2: UIImageView) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(image1.bounds.size, false, 0.0)
        image2.layer.renderInContext(UIGraphicsGetCurrentContext()!)
        image1.layer.renderInContext(UIGraphicsGetCurrentContext()!)
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img
    }
}

func addWatermark() {
    let newImage = UIImage.imageWithWatermark(imageView, image2: watermarkImageView)
    UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil)
}

编辑:我保存的图像上出现了水印。

我必须切换层的顺序:

 image1.layer.renderInContext(UIGraphicsGetCurrentContext()!)
 image2.layer.renderInContext(UIGraphicsGetCurrentContext()!)

但是,它没有出现在正确的位置。它似乎总是出现在图像的中心。

最佳答案

如果你抓取 UIImageViews 的图像,你可以使用以下概念:

if let img = UIImage(named: "image.png"), img2 = UIImage(named: "watermark.png") {

    let rect = CGRect(x: 0, y: 0, width: img.size.width, height: img.size.height)

    UIGraphicsBeginImageContextWithOptions(img.size, true, 0)
    let context = UIGraphicsGetCurrentContext()

    CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor)
    CGContextFillRect(context, rect)

    img.drawInRect(rect, blendMode: .Normal, alpha: 1)
    img2.drawInRect(CGRectMake(x,y,width,height), blendMode: .Normal, alpha: 1)

    let result = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil)

}

关于swift - 如何使用此代码向图像添加水印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796202/

相关文章:

Iphone 将 IplImage 转换为 UIImage 并返回导致旋转

swift - 在 Realm 数据库中创建并更新现有元素时出现问题

ios - nsuserdefault 不保存数组 - Swift

uitableview - 如何从 NSMutableArray 在 UITableViewCell 中显示图像?

ios - 如何绘制围绕特定点旋转的 NSAttributedString?

ios6 - CALayer renderInContext iOS7

ios - 截取带有背景图片的屏幕截图 - iOS

ios - imageView 在 xcode9 中不显示图像

ios - 如何使用 Scene Kit 每帧运行一段代码?

ios - 如何在 subview 中获取 UIImage 的来源