Quartz2D——图片水印,图片剪切

图片水印实现步骤:

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();

效果:






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值