标签:
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];
标签:
原文地址:http://www.cnblogs.com/caofutao/p/4824639.html