1、创建一个背景图片UIImage对象
UIImage *bgImage = [UIImage imageNamed:@"bgImage"];
2、创建位图上下文
UIGraphicsBeginImageContextWithOptions(size,opaque,scale);
size:图片大小
opaque:YES 不透明, NO 透明
scale:获取生成图片的大小 图片大小:2020 生成图片大小是:(20scale20scale
3、将背景图片添加到位图上,调用drawInRect:方法
4、创建水印image对象,调用drawInRect:方法,将其添加到位图上下文中
5、从位图上下文中获取合成的新图片,并显示在控制器的imageView上,获取位图上下文中合成的新图片的方法UIGraphicsGetImageFromCurrentImageContext()
6、结束位图编辑,调用UIGraphicsEndImageContext()结束编辑
7、将合成的图片保存
将图片转换成NSData,再调用NSData的write方法。
其中,UIImage转换成NSData的方法有两个:
UIImagePNGRepresentation()和UIImageJPEGRepresentation()
部分代码:
UIImage *bgImage = [UIImage imageNamed:@"bgImage"];
//获取UIImage对象,显示到imageView上
//创建位图,开启图片
//size 位图大小
//opaque alpha YES 不透明, NO透明
//scale 获取生成图片大小 位图大小:20*20 生成图片大小是:(20*scale*20*scale)
UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 4);
[bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.width)];
UIImage *waterImage = [UIImage imageNamed:@"header"];
[waterImage drawInRect:CGRectMake(bgImage.size.width - 60, bgImage.size.height - 60, 60, 60)];
//从当前位图获取当前编辑的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//结束当前编辑
UIGraphicsEndImageContext();
self.imageView.image = newImage;
// 将Image保存成一张png
// 将UIImage转成NSData对象,NSData有个write方法可以保存图片
NSData *iamgeData = UIImagePNGRepresentation(newImage);
[iamgeData writeToFile:@"/Users/apple/Desktop/new.png" atomically:YES];
// 保存jpg
//compressionQuality 压缩质量 值的范围(0-1)
// 100KB * 0.7 = 70KB
NSData *imageData = UIImageJPEGRepresentation(newImage, 0.7);
[imageData writeToFile:@"/Users/apple/Desktop/new1.jpg" atomically:YES];