IOS学习之——位图上下文 -- 水印图片

本文介绍如何在 iOS 开发中使用 UIImage 对象为照片添加水印,并演示了如何通过位图上下文裁剪图片并添加圆形边框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 //*********************************************************************************   位图上下文  水印照片  -
            生成一张有水印的照片,一定要获取UIImage 对象, 然后显示中imageview 上

            //创建一背景图片
            UIImage *bgImage =[UIImage imageNamed:@"scene"];
            //创建一个位图(图片),开启位图上下文
            //size 位图大小 opaque:alpha通道:YES 不透明 NO 不透明 使用NO,生成的更清晰
            //scale 比例 设置0.0 为屏幕的比例
            //scale 是用于获取生成图片大小,比如位图大小 20×20 /生成一张图片 (20*scale × 20*scale)
            NSLog(@"当前屏幕的比例%f ",[UIScreen mainScreen].scale);
            UIGraphiceBeginImageContextWithOptions(bgImage.size,NO,0.0);

            //2画背景图片
            [bgImage drawInRect :CGRectMake(0,0,bgImage.size.width,bgImage.size.height)];

            //3 画水印,
            //算水印的位置和大小
            CGFloat waterW = 80;
            CGFloat waterH = 60;
            CGFloat waterX = bgImage.size.width -waterW;
            CGFloat waterY = bgImage.size.height -waterH;

            UIImage *waterImage =[UIImage imageName:@"logo"];
            [waterImage drawInRect:CGRectMake(waterX,waterY,waterW,waterH)];
            //4 从位图上下文获取 当前编辑的图片
            UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
            //5 结束当前位置编辑
            UIGraphicsEndImageContext();
            //6 显示在UImageView 上
            self.imageView.image = newImage;


#pragma mark 剪裁图片
            //需求:从位图上下文,裁剪图片[裁剪成圆形,也添加圆形的边框],生成一张图片

            // 获取要裁剪的图片
            UIImage *img = [UIImage imageNamed:@"papa"];
            CGRect imgRect = CGRectMake(0, 0, img.size.width, img.size.height);

            // 1.开启位图上下文
            UIGraphicsBeginImageContextWithOptions(img.size, NO, 0.0);

#warning 在自定义的view的drawRect方法里,调用UIGraphicsGetCurrentContext获取的上下文,是图层上下文(Layer Graphics Context)
            // 1.1 获取位图上下文
            CGContextRef bitmapContext = UIGraphicsGetCurrentContext();

            // 2.往位图上下裁剪图片

****    // 2.1 指定一个圆形的路径,把圆形之外的剪切掉
            CGContextAddEllipseInRect(bitmapContext, imgRect);
            CGContextClip(bitmapContext);


            // 2.2 添加图片
            [img drawInRect:imgRect];

            // 2.3 添加边框
            // 设置边框的宽度
            CGContextSetLineWidth(bitmapContext, 3);
            // 设置边框的颜色
            [[UIColor blueColor] set];
            CGContextAddEllipseInRect(bitmapContext, imgRect);
            CGContextStrokePath(bitmapContext);


            // 3.获取当前位图上下文的图片
            UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

            // 4.结束位图编辑
            UIGraphicsEndImageContext();

            // 把图片显示在控制器的view
            self.imageView.image = newImage;


            // 保存图片 先把图片转成NSData,然后调用其的write
            NSData *imgData = UIImagePNGRepresentation(newImage);
            [imgData writeToFile:@"/Users/apple/Desktop/new.png" atomically:YES];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值