截取UIImage指定大小区域
来源:互联网 发布:软件做账 编辑:程序博客网 时间:2024/06/05 08:42
最近遇到这样的需求:从服务器获取到一张照片,只需要显示他的左半部分,或者中间部分等等。也就是截取UIImage指定大小区域。
UIImage扩展
我的解决方案是对UIImage
进行扩展。通过CGImageRef
和CGImage
完成截取,调用的方法是:CGImageCreateWithImageInRect
。扩展类叫UIImage+Crop
,具体代码如下:
UIImage+Crop.h
#import <UIKit/UIKit.h>typedef NS_ENUM(NSInteger, XYCropImageStyle){ XYCropImageStyleRight =0, // 右半部分 XYCropImageStyleCenter =1, // 中间部分 XYCropImageStyleLeft =2, // 左半部分 XYCropImageStyleRightOneOfThird =3, // 右侧三分之一部分 XYCropImageStyleCenterOneOfThird =4, // 中间三分之一部分 XYCropImageStyleLeftOneOfThird =5, // 左侧三分之一部分 XYCropImageStyleRightQuarter =6, // 右侧四分之一部分 XYCropImageStyleCenterRightQuarter =7, // 中间右侧四分之一部分 XYCropImageStyleCenterLeftQuarter =8, // 中间左侧四分之一部分 XYCropImageStyleLeftQuarter =9, // 左侧四分之一部分};@interface UIImage (Crop)- (UIImage *)imageByCroppingWithStyle:(XYCropImageStyle)style;@end
UIImage+Crop.m
#import "UIImage+Crop.h"@implementation UIImage (Crop)- (UIImage *)imageByCroppingWithStyle:(XYCropImageStyle)style{ CGRect rect; switch (style) { case XYCropImageStyleLeft: rect = CGRectMake(0, 0, self.size.width/2, self.size.height); break; case XYCropImageStyleCenter: rect = CGRectMake(self.size.width/4, 0, self.size.width/2, self.size.height); break; case XYCropImageStyleRight: rect = CGRectMake(self.size.width/2, 0, self.size.width/2, self.size.height); break; case XYCropImageStyleLeftOneOfThird: rect = CGRectMake(0, 0, self.size.width/3, self.size.height); break; case XYCropImageStyleCenterOneOfThird: rect = CGRectMake(self.size.width/3, 0, self.size.width/3, self.size.height); break; case XYCropImageStyleRightOneOfThird: rect = CGRectMake(self.size.width/3*2, 0, self.size.width/3, self.size.height); break; case XYCropImageStyleLeftQuarter: rect = CGRectMake(0, 0, self.size.width/4, self.size.height); break; case XYCropImageStyleCenterLeftQuarter: rect = CGRectMake(self.size.width/4, 0, self.size.width/4, self.size.height); break; case XYCropImageStyleCenterRightQuarter: rect = CGRectMake(self.size.width/4*2, 0, self.size.width/4, self.size.height); break; case XYCropImageStyleRightQuarter: rect = CGRectMake(self.size.width/4*3, 0, self.size.width/4, self.size.height); break; default: break; } CGImageRef imageRef = self.CGImage; CGImageRef imagePartRef = CGImageCreateWithImageInRect(imageRef, rect); UIImage *cropImage = [UIImage imageWithCGImage:imagePartRef]; CGImageRelease(imagePartRef); return cropImage;}
实际运用
简单测试一下,看看有没有实现我们想要的效果。首先,先加载一个完整的UIImageView。这个应该不难。代码如下:
UIImageView *imgView = [[UIImageView alloc] init];imgView.frame = CGRectMake((SCREEN.width - 226) / 2, 100, 226, 106);UIImage *image = [UIImage imageNamed:@"ganggang"];imgView.image = image;[self.view addSubview:imgView];
要对UIImage进行裁剪,首先导入头文件:
#import "UIImage+Crop.h"
在上面UIImage *image = [UIImage imageNamed:@"ganggang"];
这段代码之后加上下面这句:
image = [image imageByCroppingWithStyle:XYCropImageStyleLeft];
XYCropImageStyleLeft
是截取照片的左半部分。
截取成功,还可以截取其他区域的,只需要传入不同的XYCropImageStyle
即可实现。
0 0
- 截取UIImage指定大小区域
- 如何截取UIImage指定大小区域
- UIImage截图 截取指定大小图片
- 截屏/截取屏幕指定区域
- UIImage图片缩放到指定大小尺寸
- UIImage调整到指定大小尺寸
- 截取指定区域的并保存图片
- JavaScript截取字符串指定区域的内容
- IOS 截取指定区域的图像
- Android实现bitmap指定区域滑动截取
- 截取UIImage大小(可以用于制作缩略图)
- 使用jcrop截取指定大小的图片
- ios uiimage图片缩放到指定大小尺寸
- (网络摘抄)UIImage指定大小裁剪图片
- iOS 指定压缩大小(UIImage扩张)--Swift/OC版
- ios截取屏幕指定位置指定大小的实现
- 用纯C#实现截取屏幕指定区域
- 用纯C#实现截取屏幕指定区域
- Openstack Juno Ceilometer安装后ceilometer-api无法启动
- 数据中心TCP优化:同时满足低时延和高吞吐量
- 南邮 OJ 1204 金币阵列问题
- C#高级编程六十九天----DLR简介
- tarjan详解(转)
- 截取UIImage指定大小区域
- hdu 5349 MZL's simple problem (2015多校第五场第7题) multiset
- DrawLayout的使用
- hadoop2.6.0 datanode 无法启动问题记录
- EditText 文本域改变事件监听
- dubbo实现
- python小技巧之——in判断
- 回调函数中JSON对象的解析方式
- sql查询一张表的重复数据