iOS开发Quarz2D 九:图片加水印
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageV; @end @implementation ViewController /** * 注意:1:位图也就是图片的上下文,必须手动去开启,手动去关闭,而view的图形上下文,在drawRect方法中系统已经自动生成,由系统自动去管理图形上下文。2:[image drawAtPoint:CGPointZero];drawAtPoint,图片有多大,就绘制多大,drawRect,外界的父控件有多大,图片就会填充整个父控件 */ - (void)viewDidLoad { [super viewDidLoad]; //0.加载图片 UIImage *image = [UIImage imageNamed:@"阿狸头像"]; //1.开启一个跟图片原始大小的上下文 //opaque:不透明度,参数传0,默认根据屏幕的分辨率去设置具体的数值 UIGraphicsBeginImageContextWithOptions(image.size, NO, 0); //2.把图片绘制到上下文当中 [image drawAtPoint:CGPointZero]; //3.把文字绘制到上下文当中 NSString *str = @"小码哥"; [str drawAtPoint:CGPointMake(10, 20) withAttributes:nil]; //4.从上下文当中生成一张图片.(把上下文当中绘制的所有内容,生成一张图片) UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); //5.关闭上下文. UIGraphicsEndImageContext(); self.imageV.image = newImage; } @end
给图片水印的目的:
告诉别人图片的来源.
防止别人盗用图片.打广告.
添加水印它最终是生成了一个新的图片.
生成图片要用到了图片上下文.不需要再去自定义View,
之前一直在自定义View,是因为要拿跟View相关联的上下文.
跟View相关联的上下文是系统自动帮我们创建的,所以不需要我们自己手动创建,
但是图片上下文需要我们自己去手动创建.还需要我们自己手动去关闭.
实现水印效果的思路:
开启一个和原始图片一样的图片上下文.
把原始图片先绘制到图片上下文.
再把要添加的水印(文字,logo)等绘制到图片上下文.
最后从上下文中取出一张图片.
关闭图片上下文.
1.如何开启一个图片上下文?
size:开启多大的上文
opaque:不透明度
scale:缩放上下文.
UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);
2.如何从图片上下文当中生成一张图片?
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
3.如何关闭上下文?
UIGraphicsEndImageContext();