iOS开发 关于照片截取内容旋转的问题
2013-08-13 18:09
429 查看
在iOS开发中,遇到一个比较怪的问题,对读取出来的照片进行截取部分时。
使用的截取方法是比较常见的:
但是实际使用中,发现在截取相机拍摄的图片时,有时候截取的部分不是我们所指定的区域,截取出来的部分似乎是图片被旋转后再截取出来的。
这个问题比较奇怪,通过仔细的对比排查,我发现原来图片其实有一个一直以来基本被忽略的属性:
那么当我们在自己做想要的照片部分截取时,就需要对照片的朝向事先做好处理。才能避免出现截取区域不是我们想要的区域问题。
我处理了一个图片截取方法,供大家参考:
其中的rect是相对与图片的像素尺寸(注意,不是iOS默认的点尺寸)。
其中的transform是在正常显示原图的ImageView的transform属性。比如orginImageView.transform。
好了这个分享出来,希望对大家有所帮助。
最后给出对一个照片截取的开源控件:PEPhotoCropEditor,做的比较好,大家可以去参考研究下。
转载请注明出处:来自月若无涯的博客:/article/3638005.html 欢迎指正
使用的截取方法是比较常见的:
CGImageRef imageRef=CGImageCreateWithImageInRect([image CGImage],rect); UIImage *newImage=[UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef);
但是实际使用中,发现在截取相机拍摄的图片时,有时候截取的部分不是我们所指定的区域,截取出来的部分似乎是图片被旋转后再截取出来的。
这个问题比较奇怪,通过仔细的对比排查,我发现原来图片其实有一个一直以来基本被忽略的属性:
@property(nonatomic,readonly) UIImageOrientation imageOrientation;这个属性标记了图片的方向,而在实际使用时,通常我们使用UIImageView做图片显示时,并不用关心这个图片的方向,因为UIImageView继承自UIView的属性:
@property(nonatomic) CGAffineTransform transform;能够自动的按照图片的朝向进行显示。
那么当我们在自己做想要的照片部分截取时,就需要对照片的朝向事先做好处理。才能避免出现截取区域不是我们想要的区域问题。
我处理了一个图片截取方法,供大家参考:
+(UIImage*)imageFromImage:(UIImage*)image inRect:(CGRect)rect transform:(CGAffineTransform)transform{ CGSize newSize=rect.size; UIGraphicsBeginImageContext(newSize); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, newSize.width / 2, newSize.height / 2); CGContextConcatCTM(context, transform); CGContextTranslateCTM(context, newSize.width / -2, newSize.height / -2); [image drawInRect:CGRectMake(-rect.origin.x, -rect.origin.y, image.size.width, image.size.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; }
其中的rect是相对与图片的像素尺寸(注意,不是iOS默认的点尺寸)。
其中的transform是在正常显示原图的ImageView的transform属性。比如orginImageView.transform。
好了这个分享出来,希望对大家有所帮助。
最后给出对一个照片截取的开源控件:PEPhotoCropEditor,做的比较好,大家可以去参考研究下。
转载请注明出处:来自月若无涯的博客:/article/3638005.html 欢迎指正
相关文章推荐
- ios 3D引擎 SceneKit 开发(4) --关于旋转的几点问题(1)
- ios 3D引擎 SceneKit 开发(5) --关于旋转的几点问题(2)
- iOS开发:关于屏幕旋转问题
- 关于 IOS 开发中遇到的 读取 cell xib 文件时导致死机的问题。
- IOS 关于用xmppframework开发的若干问题(1)
- IOS开发笔记之十七——一个关于工程目录读写权限的问题
- ios开发点滴-关于UIDatePicker 时间相差8个小时的问题
- 【iOS开发学习】关于在TableView里添加搜索的问题。
- 关于IOS开发常见的循环引用问题
- iOS 关于如何将cell.detailTextLabel.text的内容显示出来的问题。
- 关于iOS开发中添加C文件报错的问题
- iOS开发C语言关于内存问题的总结
- 关于iOS开发UIWebView缓存相关问题的解决
- 关于ios开发的证书若干问题
- ios 关于3d旋转问题
- iPhone开发笔记(21)iOS 6旋转问题解决方法汇总
- 关于iOS开发CPU架构的问题
- IOS开发:关于UILabel阴影设置的问题
- ios 关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示
- 关于APICloud开发iOS出现不全屏问题