码迷,mamicode.com
首页 > 其他好文 > 详细

Quartz2D 给图片打水印

时间:2015-09-20 23:51:43      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

1. 水印:在图片上加的防止他人盗图的半透明logo、文字、图标

  水印作用:告诉你这个图片从哪来的

2. 实现方式:利用Quartz2D,将水印(文字、LOGO)画到图片的右下角

    将代码封装成UIImage的分类方法,便于使用

 1 + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo {
 2     UIImage *oldImage = [UIImage imageNamed:bg];
 3     // 1.创建一个基于位图(bitmap)的上下文(开启一个基于位图的上下文)
 4     // size:新图片的尺寸
 5     // opaque:YES:不透明,NO:透明
 6     // 这行代码过后,相当于创建一张新的bitmap,也就是新的UIImage对象
 7     UIGraphicsBeginImageContextWithOptions(oldImage.size, NO, 0.0);
 8     // 2.画背景
 9     [oldImage drawInRect:CGRectMake(0, 0, oldImage.size.width, oldImage.size.height)];
10     // 3.画水印
11     UIImage *image = [UIImage imageNamed:logo];
12 
13     CGFloat scale = 0.5; // 按比例缩小图片
14     CGFloat logoW = image.size.width * scale;
15     CGFloat logoH = image.size.height * scale;
16     CGFloat logoX = oldImage.size.width - logoW;
17     CGFloat logoY = oldImage.size.height - logoH;
18     [image drawInRect:CGRectMake(logoX, logoY, logoW, logoH)];
19     // 4.从上下文中获取制作完毕的UIImage对象
20     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
21 
22     // 5.结束上下文
23     UIGraphicsEndImageContext();
24     return newImage;
25 }

打水印实质上是合成图片,把雪花??印在图片上,效果图如下:

技术分享

4. 将生成的新图片写到沙盒中

    // 6.将image对象压缩成png格式的二进制数据
    NSData *data = UIImagePNGRepresentation(image);
    // 7.获得沙盒路径,写入文件
    NSString *documentPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"lufei.png"];
    [data writeToFile:documentPath atomically:YES];

 

Quartz2D 给图片打水印

标签:

原文地址:http://www.cnblogs.com/caofutao/p/4824639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!