屏幕截图

//扩展分类使用
@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)相关推荐

  1. 计算机考试字处理怎样加水印,一学即会!图片上如何添加文字水印

    原标题:一学即会!图片上如何添加文字水印 平时工作中,有的小伙伴经常需要处理一大堆的图片,比如说在网上发表自己的文章,在购物网站上晒单,还是自己亲手拍的照片,自己制作的图片,或者画出来一个好的创意,想 ...

  2. html的div插入图片,html插入图片示例(html添加图片)

    原标题:html插入图片示例(html添加图片) 在html插入图片 让图片显示需要HTML标签来实现,使用img标签即可实现. 一.html图片标签语法 复制代码 代码如下: img介绍: src ...

  3. c语言窗口插入图片,c语言添加图片Word版

    <c语言添加图片Word版>由会员分享,可在线阅读,更多相关<c语言添加图片Word版(10页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可 ...

  4. class vue 添加图片_vue+element 添加图片组件

    添加图片 效果图 微信截图_20200630144419.png 微信截图_20200630144532.png 由于该组件在页面中使用位置广泛,一但在dialog中使用便会发生错误,故未添加预览功能 ...

  5. php代码里加图片,php如何添加图片

    php如何添加图片?php中插入图片的代码是什么? PHP插入图片,实际还是输出HTML代码 比如:echo ''; 还可以直接用PHP生成图片显示出来 php的gd库可以生成多种图像文件,如gif, ...

  6. QT打印窗口、退出、设置字体及颜色、设置时间、控件实现系统函数、添加资源文件(菜单图片)、工具栏添加图片

    打印窗口 #include <QPrintDialog> 退出 QObject::connect(ui->exitAction, SIGNAL(triggerd()), this, ...

  7. python 添加图片_python3 tkinter添加图片和文本

    在前面一篇文章基础上,使用tkinter添加图片和文本.在开始之前,我们需要安装Pillow图片库. 一.Pillow的安装 1.方法一:需要下载exe文件,根据下面图片下载和安装 下载完成后,直接点 ...

  8. php中如何插入图片,php如何添加图片

    php如何添加图片?php中插入图片的代码是什么? PHP插入图片,实际还是输出HTML代码 比如:echo ''; 还可以直接用PHP生成图片显示出来 php的gd库可以生成多种图像文件,如gif, ...

  9. java monogodb 图片 pdf 下载添加单个水印 铺满水印

    这是基于monogodb 下载后添加水印的介绍  不管你现在用的是本地下载还是其他的服务器 输出后的结果都是添加水印 基本的操作一样的都是通过流下载的然后添加水印 ! 这边的所有操作都是基于这个官网的 ...

  10. html怎么放路径图片,html如何添加图片路径

    html添加图片路径的方法:首先新建一个html文件,在正文标签中插入img标签:然后在img标签中添加"alt"属性:最后,插入img标签的图片的宽度和高度默认为图片本身的宽度和 ...

最新文章

  1. Task01:青少年软件编程(Scratch)等级考试模拟卷(二级)
  2. 简书python自动化运维_简明Python开发教程(4):网络自动化运维的曙光
  3. java面向对象第六章
  4. jQuery easyUI--layout布局页面
  5. 一、搭建Python环境和安装Pycharm
  6. How to: Build a Client Application
  7. sqlserver约束
  8. pythoncad图纸文件管理系统为用户_SafeShare通用CAD图纸文件管理软件6用户免费使用版...
  9. 数据接口请求异常:error_springboot2.2.X手册:构建多元化的API接口,我们这样子设计
  10. 安卓recovery流程分析【第一篇】
  11. JavaEE学习03--Servlet
  12. python找出数组中第2大的数字
  13. android 编辑txt,.txt到可修改的android数据库
  14. 2019奥鹏四月份考试英语计算机,中石油华东2019年秋季学期《大学英语4》在线考试补考(适用于2020年4月份考试)题目【标准答案】...
  15. ODI接口开发案例:RMA(客户退货订单)同步
  16. 虾皮Shopee上货铺货助理工具
  17. 计算机专业云平台管理试题,练习题云平台/计算机软考考试试题-考试系统
  18. Wordpress 网站运维 | HTTPS安全证书绑定
  19. Visio日程规划图——论文计划进度图
  20. RK3566调试VL53L01

热门文章

  1. CC2640R2无线升级OAD片内flash升级教程
  2. 手机dpi换算方法,以iPhone4为例
  3. 三维空间无人机集群编队控制,避障,目标追踪
  4. Modelsim中.do脚本语言基本介绍
  5. md开源云笔记php,开源在线云笔记 ManGe-Notes
  6. Pell数列(递归)
  7. cocos creator 划动屏幕以移动摄像机
  8. python场景建立_【汇智学堂】-python小游戏(太空阻击之三-场景建立)
  9. Linux C++ 服务器端这条线怎么走?
  10. 实战干货|自研数据存储迁移MySQL实战