背景:有这样一个需求,拍的照片需要添加水印。
知道需要使用图片绘制相关的功能,经过1小时搞定,直接上代码啦。
extension UIImage {
func add(text:String) -> UIImage {
var im:UIImage?
autoreleasepool {
let scale = UIScreen.main.scale
let size = CGSize(width: self.size.width, height: self.size.height + 60*scale)
UIGraphicsBeginImageContextWithOptions(size, false, scale)
self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)) // 绘制图片
let context = UIGraphicsGetCurrentContext() // 创建图片上下文
context?.setFillColor(UIColor.red.cgColor) // 设置当前填充颜色的图形上下文
context?.fill(CGRect(x: 0, y: self.size.height, width: self.size.width, height: 60*scale))//填充颜色
let textRect = CGRect(x: 20*scale, y: self.size.height + 10*scale, width: self.size.width - 40*scale, height: 40*scale)
(text as NSString).draw(in: textRect, withAttributes: [.font : UIFont.systemFont(ofSize: 14*scale),.foregroundColor:UIColor.white]) // 绘制文字
im = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
if let image = im {
print("图片生成成功!!")
return image
} else {
print("图片生成失败!!")
}
return self
}
}
直接 image.add(text:"2023-12-19 12:20:30 \n 我的水印")
网友评论