iOS开发之功能模块--长方形UIImage截取中间最大正方形区域
2016-08-05 16:16
519 查看
这里直接用CoreGraphics的一些处理图片的方法,本身不难,但是有些时候用的不多,就会遗忘掉使用方法的细节。下面就直接展示关键源码,以便下次重复需求,就可以立马找回。
该方法中在UIImage的类别拓展里:
百度云链接: http://pan.baidu.com/s/1dFbTN7j 密码: kkf5
该方法中在UIImage的类别拓展里:
-(UIImage *)cutCenterSquareImage{ CGSize imageSize = self.size; // 中间最大正方形尺寸 CGRect centerRect; CGFloat centerRectWH; //根据图片的大小计算出图片中间矩形区域的位置与大小 if (imageSize.width > imageSize.height) { centerRectWH = imageSize.height; float leftMargin = (imageSize.width - imageSize.height) * 0.5; centerRect = CGRectMake(leftMargin,0,centerRectWH,centerRectWH); }else{ centerRectWH = imageSize.width; float topMargin = (imageSize.height - imageSize.width)*0.5; centerRect = CGRectMake(0,topMargin,centerRectWH,centerRectWH); } CGImageRef imageRef = self.CGImage; //在最大正方形尺寸范围内截取 CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, centerRect); UIImage *tmp = [[UIImage alloc] initWithCGImage:imageRefRect]; CGImageRelease(imageRefRect);// tmp是截取之后的image /* // 使用上下文,可以为上的tmp重新定位 CGSize imageRectSize = CGSizeMake(centerRectWH, centerRectWH); CGRect imageRect = CGRectMake(0, 0, centerRectWH, centerRectWH); UIGraphicsBeginImageContext(imageRectSize); [tmp drawInRect:imageRect]; // 从当前context中创建一个改变大小后的图片 tmp = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈 UIGraphicsEndImageContext(); */ return tmp; }
百度云链接: http://pan.baidu.com/s/1dFbTN7j 密码: kkf5
相关文章推荐
- HDU 5793 - A Boring Question
- Android UI系列-----Dialog对话框
- CDH key value index lily安装配置
- 一款应用的UI设计是否合格,该如何判断?
- Vue - 使用命令行搭建单页面应用
- UICollectionViewCell的设置间距
- 一款应用的UI设计是否合格,该如何判断?
- ios-UI高级多线程 GCD实现单例模式
- easyui-combobox 绑定数据的俩中方式
- WPF async异步处理中实现 UI thread 的绑定同步
- request.setAttribute()与request.getSession().setAttribute()
- hdu 5793 A Boring Question(2016第六场多校)
- flask request用法
- LinkedBlockingQueue学习
- Spacebuilder在Mono上运行修改备忘
- HDU 5793 A Boring Question
- iOS UI调试神器,插件injection for Xcode使用方法
- HDU-5793-A Boring Question-打表找规律加模逆元
- UIImageView 的contentMode属性
- Android Handler中的handleMessage方法和post方法之源码剖析 及UI更新方法