图片水印(Quartz2D)

一、水印

+  在图片上加的防止他人盗图的半透明logo、文字、图标

二、如何实现在图片上加水印

    1. 开启位图上下文

UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);


- 2.绘制图片与文字

- 3.利用一个函数,从上下文中获取一张图片
```objc
 // 从上下文内容中生成一张图片
    image = UIGraphicsGetImageFromCurrentImageContext();
  • 4.关闭位图上下文,有开启就要有关闭
    // 结束上下文
      UIGraphicsEndImageContext();
    

- 5.注意:可以将图片转为二进制NSData,然后将其写到本地桌面

```objc
    NSData *data = UIImageJPEGRepresentation(image, 0.00001);
    [data writeToFile:@"/Users/cjp/Desktop/image.jpg" atomically:YES];

三、具体代码实现
#import "ViewController.h"

    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        // 给一张图片添加文字或者Logo,生成一张新的带有文字或者Logo图片
        
        // 绘制图片到位图上下文,然后再利用位图上下文生成一张新的图片
        
        // 加载图片
        UIImage *image = [UIImage imageNamed:@"小黄人"];
        
        // 1.开启位图上下文
        // size:上下文的尺寸
        // opaque:不透明,总结:在上下文中一般都是设置不透明度,控件才是设置透明度
        // scale: 0表示不缩放
        UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
        
        // 绘制图片
        [image drawAtPoint:CGPointZero];
        
        // 绘制文字
        NSString *str = @"小黄人";
        [str drawAtPoint:CGPointZerowithAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]}];
        
        // 从上下文内容中生成一张图片
        image = UIGraphicsGetImageFromCurrentImageContext();
        
        // 结束上下文
        UIGraphicsEndImageContext();
        
        // 把图片写入到桌面
        
        // image -> NSData
        // 把图片生成一个png格式的二进制数据
        // png已经高清图片格式
    //    NSData *data = UIImagePNGRepresentation(image);
        // compressionQuality:图片质量
        
        NSData *data = UIImageJPEGRepresentation(image, 0.00001);
        [data writeToFile:@"/Users/cjp/Desktop/image.jpg" atomically:YES];
    }
    @end

你可能感兴趣的:(图片水印(Quartz2D))