一、水印的概念和作用
1> 水印的概念:
在图片上加的半透明logo、文字、图标。
2> 水印的作用:
a. 可以展示图片的出处;
b. 一些网站为了版权问题、广告而添加;
c. 有时候,在手机客户端app中也需要用到水印技术。比如微博用户拍完照片后,可以在照片上打个水印,标识这个图片是属于谁的。
二、水印的实现方式和核心代码
1> 水印的实现方式:
利用Quartz2D,将水印(文字、LOGO)画到图片上。
2> 核心代码
开启一个基于BitMap(位图)的图形上下文
void UIGraphicsBeginImageContextWithOptions(CGSizesize, BOOL opaque, CGFloat scale)
从上下文中取得图片(UIImage)
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
结束基于位图的图形上下文
void UIGraphicsEndImageContext();
三、图片加水印的基本思路
a. 添加文字水印
1>创建位图上下文;
2>把图片画上去;
3>把文字画上去;
4>从上下文中取出图片。
b. 添加图片水印
1>创建位图上下文;
2>把图片画上去;
3>加载 logo 图片(水印图片),把水印图片也画上去;
4>从上下文中取出图片。
四、图片加水印的Demo
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
// 获取原图片
UIImage* image = [UIImageimageNamed:@"hani"];
// 计算图片的size
CGSize imageSize = CGSizeMake(image.size.width,image.size.height);
// 开启图片类型的图形上下文
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
// 绘制图片
[image drawAtPoint:CGPointZero];
// 水印的文字
NSString* str = @"你妈妈喊你回家吃饭";
// 绘制文字水印
[strdrawAtPoint:CGPointMake(30,30)withAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:20],NSForegroundColorAttributeName : [UIColor whiteColor] }];
// 水印的图片
UIImage* logo = [UIImage imageNamed:@"me"];
// 绘制图片水印
[logodrawAtPoint:CGPointMake(imageSize.width - logo.size.width - 30,imageSize.height - logo.size.height - 30)];
// 取图片
image =UIGraphicsGetImageFromCurrentImageContext();
// 关闭图片类型的图形上下文
UIGraphicsEndImageContext();
// 保存到相册中
UIImageWriteToSavedPhotosAlbum(image, NULL,NULL, NULL);
}
保存到相册中的图片如下