iOS屏幕截图,裁切图片(制作头像),添加图片水印(Quarz2D)
屏幕截图
//扩展分类使用
@implementation UIImage (Clip)
+ (instancetype)captureWithView:(UIView *)view
{// 1.开启上下文UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0);// 2.将控制器view的layer渲染到上下文(放什么进去则截图什么)[view.layer renderInContext:UIGraphicsGetCurrentContext()];// 3.取出图片UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();// 4.结束上下文UIGraphicsEndImageContext();return newImage;
}
@end
- (void)clip {//延迟截图,让按钮不是按下状态就被截图了 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{// 1.捕捉(调用下面的方法进行 捕抓生成新的image后再存入文件中)UIImage *newImage = [UIImage captureWithView:self.view];// 2.写文件NSData *data = UIImagePNGRepresentation(newImage);NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];[data writeToFile:path atomically:YES];});
}
图片裁剪(可用来制图特定形状的头像等)
+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor
{// 1.加载原图UIImage *oldImage = [UIImage imageNamed:name];// 2.开启上下文CGFloat imageW = oldImage.size.width + 2 * borderWidth;CGFloat imageH = oldImage.size.height + 2 * borderWidth;CGSize imageSize = CGSizeMake(imageW, imageH);UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);// 3.取得当前的上下文(上面创建的)CGContextRef ctx = UIGraphicsGetCurrentContext();// 4.画边框(大圆)[borderColor set];CGFloat bigRadius = imageW * 0.5; // 大圆半径CGFloat centerX = bigRadius; // 圆心CGFloat centerY = bigRadius;CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);CGContextFillPath(ctx); // 画圆// 5.小圆CGFloat smallRadius = bigRadius - borderWidth;CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);// 裁剪(后面画的东西才会受裁剪的影响)CGContextClip(ctx);// 6.画图[oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];// 7.取图UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();// 8.结束上下文UIGraphicsEndImageContext();return newImage;
}
添加图片水印
- (void)testWater
{UIImage *bgImage = [UIImage imageNamed:@"scene"];// 上小文 : 基于位图(bitmap) , 所有的东西需要绘制到一张新的图片上去// 1.创建一个基于位图的上下文(开启一个基于位图的上下文)// size : 新图片的尺寸// opaque : YES : 不透明, NO : 透明// 这行代码过后.就相当于常见一张新的bitmap,也就是新的UIImage对象UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 0.0);// 2.画背景[bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)];// 3.画右下角的水印UIImage *waterImage = [UIImage imageNamed:@"logo"];CGFloat scale = 0.2;CGFloat margin = 5;CGFloat waterW = waterImage.size.width * scale;CGFloat waterH = waterImage.size.height * scale;CGFloat waterX = bgImage.size.width - waterW - margin;CGFloat waterY = bgImage.size.height - waterH - margin;[waterImage drawInRect:CGRectMake(waterX, waterY, waterW, waterH)];// 4.从上下文中取得制作完毕的UIImage对象UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();// 5.结束上下文UIGraphicsEndImageContext();// 6.显示到UIImageViewself.iconView.image = newImage;// 7.将image对象压缩为PNG格式的二进制数据NSData *data = UIImagePNGRepresentation(newImage);// UIImageJPEGRepresentation(<#UIImage *image#>, <#CGFloat compressionQuality#>)// 8.写入文件 path 拼接 stringByAppendingPathComponent "/"+@"new.png"NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];[data writeToFile:path atomically:YES];
}
iOS屏幕截图,裁切图片(制作头像),添加图片水印(Quarz2D)相关推荐
- 计算机考试字处理怎样加水印,一学即会!图片上如何添加文字水印
原标题:一学即会!图片上如何添加文字水印 平时工作中,有的小伙伴经常需要处理一大堆的图片,比如说在网上发表自己的文章,在购物网站上晒单,还是自己亲手拍的照片,自己制作的图片,或者画出来一个好的创意,想 ...
- html的div插入图片,html插入图片示例(html添加图片)
原标题:html插入图片示例(html添加图片) 在html插入图片 让图片显示需要HTML标签来实现,使用img标签即可实现. 一.html图片标签语法 复制代码 代码如下: img介绍: src ...
- c语言窗口插入图片,c语言添加图片Word版
<c语言添加图片Word版>由会员分享,可在线阅读,更多相关<c语言添加图片Word版(10页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可 ...
- class vue 添加图片_vue+element 添加图片组件
添加图片 效果图 微信截图_20200630144419.png 微信截图_20200630144532.png 由于该组件在页面中使用位置广泛,一但在dialog中使用便会发生错误,故未添加预览功能 ...
- php代码里加图片,php如何添加图片
php如何添加图片?php中插入图片的代码是什么? PHP插入图片,实际还是输出HTML代码 比如:echo ''; 还可以直接用PHP生成图片显示出来 php的gd库可以生成多种图像文件,如gif, ...
- QT打印窗口、退出、设置字体及颜色、设置时间、控件实现系统函数、添加资源文件(菜单图片)、工具栏添加图片
打印窗口 #include <QPrintDialog> 退出 QObject::connect(ui->exitAction, SIGNAL(triggerd()), this, ...
- python 添加图片_python3 tkinter添加图片和文本
在前面一篇文章基础上,使用tkinter添加图片和文本.在开始之前,我们需要安装Pillow图片库. 一.Pillow的安装 1.方法一:需要下载exe文件,根据下面图片下载和安装 下载完成后,直接点 ...
- php中如何插入图片,php如何添加图片
php如何添加图片?php中插入图片的代码是什么? PHP插入图片,实际还是输出HTML代码 比如:echo ''; 还可以直接用PHP生成图片显示出来 php的gd库可以生成多种图像文件,如gif, ...
- java monogodb 图片 pdf 下载添加单个水印 铺满水印
这是基于monogodb 下载后添加水印的介绍 不管你现在用的是本地下载还是其他的服务器 输出后的结果都是添加水印 基本的操作一样的都是通过流下载的然后添加水印 ! 这边的所有操作都是基于这个官网的 ...
- html怎么放路径图片,html如何添加图片路径
html添加图片路径的方法:首先新建一个html文件,在正文标签中插入img标签:然后在img标签中添加"alt"属性:最后,插入img标签的图片的宽度和高度默认为图片本身的宽度和 ...
最新文章
- Task01:青少年软件编程(Scratch)等级考试模拟卷(二级)
- 简书python自动化运维_简明Python开发教程(4):网络自动化运维的曙光
- java面向对象第六章
- jQuery easyUI--layout布局页面
- 一、搭建Python环境和安装Pycharm
- How to: Build a Client Application
- sqlserver约束
- pythoncad图纸文件管理系统为用户_SafeShare通用CAD图纸文件管理软件6用户免费使用版...
- 数据接口请求异常:error_springboot2.2.X手册:构建多元化的API接口,我们这样子设计
- 安卓recovery流程分析【第一篇】
- JavaEE学习03--Servlet
- python找出数组中第2大的数字
- android 编辑txt,.txt到可修改的android数据库
- 2019奥鹏四月份考试英语计算机,中石油华东2019年秋季学期《大学英语4》在线考试补考(适用于2020年4月份考试)题目【标准答案】...
- ODI接口开发案例:RMA(客户退货订单)同步
- 虾皮Shopee上货铺货助理工具
- 计算机专业云平台管理试题,练习题云平台/计算机软考考试试题-考试系统
- Wordpress 网站运维 | HTTPS安全证书绑定
- Visio日程规划图——论文计划进度图
- RK3566调试VL53L01