iOS 自己水印图片

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];

你可能感兴趣的:(iOS 自己水印图片)