将 UIImage 转换为 CGImage 会导致图像旋转
Posted
技术标签:
【中文标题】将 UIImage 转换为 CGImage 会导致图像旋转【英文标题】:Converting UIImage to CGImage cause rotation of Image 【发布时间】:2012-05-25 06:03:43 【问题描述】:我正在尝试通过我的自定义裁剪器裁剪图像。不是来自 UIImagePickerController 的。现在,我通过处理 UIImagePicker 的委托在 UIImgeView 中显示从 Image Picker 捕获的图像:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
imvOriginalImage.image = image;
为了裁剪,我必须将此图像转换为 CGImageRef。图像以纵向模式拍摄。现在,当我在 CGImageRef 中转换此图像时,图像方向会发生变化。即使我使用以下内容:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
//imvOriginalImage.image = image;
CGImageRef imgRef = [image CGImage];
UIImage *img = [UIImage imageWithCGImage:imgRef];
[imvOriginalImage setImage:img];
图像方向已更改。这只发生在那些以纵向模式拍摄的图像上。横向图片没有这个问题。
-
为什么会这样?
如何解决?
提前致谢。
【问题讨论】:
这是因为UIImage
有一个imageOrientation
属性,它知道旋转图像,但CGImageRef
不知道这个。
【参考方案1】:
这是 iPhone 相机与 Home 按钮相比旋转图像。它使用EXIF,即图像的元数据。看到这个帖子:
iPhone image rotation
【讨论】:
以上是关于将 UIImage 转换为 CGImage 会导致图像旋转的主要内容,如果未能解决你的问题,请参考以下文章
UIImage 在将其转换为 CIImage,然后转换为 CGImage 并返回 UIImage 时失去其方向
有啥方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?
为啥我的 CGImage 是 UIImage 大小的 3 倍