iOS开发之功能模块--长方形UIImage截取中间最大正方形区域
2023-09-11 14:21:34 时间
这里直接用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是截取之后的image 25 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 }
百度云链接: http://pan.baidu.com/s/1dFbTN7j 密码: kkf5
相关文章
- 【数据】开发iOS应用,不得不看的数据和教训
- 《iOS 6核心开发手册(第4版)》——1.4节秘诀:同时使用多个姿势识别器
- 《iOS 6核心开发手册(第4版)》——1.10节秘诀:使用多触摸交互
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- iOS蓝牙原生封装,助力智能硬件开发
- 阿里开源 iOS 协程开发框架 coobjc!--异步编程的问题与解决方案
- iOS开发系列--通知与消息机制
- iOS开发UI篇—ios应用数据存储方式(归档)
- iOS开发 -- 在Xcode中引入cpp文件,并调用cpp文件中的方法
- iOS开发 --重写UISearchBar的时候,点击取消searchbar会变深色,一闪而过
- iOS开发之Bug--UITextField使用时文字向下偏移问题
- iOS开发之功能模块--计算高度Demo探究手稿
- IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序
- iOS开发之网络数据解析(二)--XML解析简介
- 1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)
- IOS开发之功能模块--自定义导航控制器类常用自定义的代码