图片水印实现步骤:
1、创建一个背景图的UIImage对象
2、创建位图上下文(绘图的输出目标) (画背景图)
3、将背景图片添加到位图上下文
4、创建一个水印的UIImage对象,调用其drawInRect方法,将其添加到位图上下文
5、从位图上下文中获取合成的新的图片,并显示在控制器的UIImageView上
6、结束位图编辑
- (void)drawRect:(CGRect)rect {
// 1、创建一个背景图的UIImage对象
UIImage *bgImage = [UIImage imageNamed:@"scene"];
// 2、创建位图上下文(绘图的输出目标) (画背景图)
// 第一个参数:图片大小
// 第二个参数(opaque):alpha通道 YES:不透明 NO:透明 使用NO生成的图片更清晰
// 第三个参数(scale):比例 设置0.0为屏幕的比例
// scale:是用于设置生成图片大小 比如:位图大小20x20 生成一张图片:(20*scale x 20*scale)
// 获取当前屏幕的比例
// CGFloat scale = [[UIScreen mainScreen] scale];
UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 0.0);
// 3、将背景图片添加到位图上下文
// 调用图片的drawInRect方法即可
[bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)];
// 4、创建一个水印的UIImage对象,调用其drawInRect方法,将其添加到位图上下文
// 由于水印的图片比较大,所以要缩小水印的图片对象
UIImage *waterImage = [UIImage imageNamed:@"logo"];
// 设置水印的比例(根据需求来定)
CGFloat waterScale = 0.4;
CGFloat waterImageW = waterImage.size.width * waterScale;
CGFloat waterImageH = waterImage.size.height * waterScale;
CGFloat waterImageX = bgImage.size.width - waterImageW;
CGFloat waterImageY = bgImage.size.height - waterImageH;
[waterImage drawInRect:CGRectMake(waterImageX, waterImageY, waterImageW, waterImageH)];
// 5、从位图上下文中获取合成的新的图片,并显示在控制器的UIImageView上
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 6、结束位图编辑
UIGraphicsEndImageContext();
// 显示图片
UIImageView *imageView = [[UIImageView alloc] initWithFrame:rect];
imageView.image = newImage;
[self addSubview:imageView];
}
效果:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
位图上下文剪切图片
// 1、创建要裁剪的图片对象
UIImage *img = [UIImage imageNamed:@"papa"];
CGRect imageRect = CGRectMake(0, 0, img.size.width, img.size.height);
// 2、开启位图上下文
UIGraphicsBeginImageContextWithOptions(img.size, NO, 0.0);
// 3、获取位图上下文,设置圆的路径,并剪切圆外的路径
CGContextRef bitmapContext = UIGraphicsGetCurrentContext();
CGContextAddEllipseInRect(bitmapContext, imageRect);
CGContextClip(bitmapContext);
// 4、将图片添加到位图上下文中
[img drawInRect:imageRect];
// 5、设置边框颜色与宽度,添加边框
CGContextSetLineWidth(bitmapContext, 4);
[[UIColor redColor] set];
CGContextAddEllipseInRect(bitmapContext, imageRect);
CGContextStrokePath(bitmapContext);
// 6、获取位图上下文中新的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 7、结束位图编辑
UIGraphicsEndImageContext();
效果: