博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发之功能模块--长方形UIImage截取中间最大正方形区域
阅读量:7232 次
发布时间:2019-06-29

本文共 1506 字,大约阅读时间需要 5 分钟。

这里直接用CoreGraphics的一些处理图片的方法,本身不难,但是有些时候用的不多,就会遗忘掉使用方法的细节。下面就直接展示关键源码,以便下次重复需求,就可以立马找回。

该方法中在UIImage的类别拓展里:

1 -(UIImage *)cutCenterSquareImage{ 2      3     CGSize imageSize = self.size; 4      5     // 中间最大正方形尺寸 6     CGRect centerRect; 7     CGFloat centerRectWH; 8      9     //根据图片的大小计算出图片中间矩形区域的位置与大小10     if (imageSize.width > imageSize.height) {11         centerRectWH = imageSize.height;12         float leftMargin = (imageSize.width - imageSize.height) * 0.5;13         centerRect = CGRectMake(leftMargin,0,centerRectWH,centerRectWH);14     }else{15         centerRectWH = imageSize.width;16         float topMargin = (imageSize.height - imageSize.width)*0.5;17         centerRect = CGRectMake(0,topMargin,centerRectWH,centerRectWH);18     }19     20     CGImageRef imageRef = self.CGImage;21     //在最大正方形尺寸范围内截取22     CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, centerRect);23     UIImage *tmp = [[UIImage alloc] initWithCGImage:imageRefRect];24     CGImageRelease(imageRefRect);// tmp是截取之后的image25     26     /*27     // 使用上下文,可以为上的tmp重新定位28     CGSize imageRectSize = CGSizeMake(centerRectWH, centerRectWH);29     CGRect imageRect = CGRectMake(0, 0, centerRectWH, centerRectWH);30     UIGraphicsBeginImageContext(imageRectSize);31     [tmp drawInRect:imageRect];32     // 从当前context中创建一个改变大小后的图片33     tmp = UIGraphicsGetImageFromCurrentImageContext();34     35     // 使当前的context出堆栈36     UIGraphicsEndImageContext();37     */38      39     return tmp;40 }

 百度云链接: 密码: kkf5

转载地址:http://zxpfm.baihongyu.com/

你可能感兴趣的文章
[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
查看>>
浅谈struts2的国际化----i18n
查看>>
一步一步从原理跟我学邮件收取及发送 3.telnet命令行发一封信
查看>>
【BIEE】08_修改浏览器标题栏显示内容
查看>>
MFC中的双缓冲技术(解决绘图闪烁问题)
查看>>
select * from A.B.C.D sqlserver 中 select * from .Literary_PuDong.dbo.Users
查看>>
linux LVM:物理卷逻辑卷
查看>>
Windows10 显示库、隐藏6个目录、隐藏OneDrive
查看>>
IE的layout布局
查看>>
常见前端知识摘要
查看>>
使用neon 开发nodejs addon
查看>>
Win8 Metro(C#)数字图像处理--2.69中点滤波器
查看>>
Python之排序
查看>>
Appium 点击屏幕
查看>>
正则表达式30分钟入门教程
查看>>
新建DataTable添加列添加行
查看>>
[LeetCode]460.LFU缓存机制
查看>>
NaviSoft31.源码开发完成
查看>>
Maven: Cannot run program "protoc"
查看>>
英特尔® Software Guard Extensions 教程系列:第一部分,英特尔® SGX 基础
查看>>