从照片库和iPhone相机中裁剪UIImage

时间:2012-09-27 20:40:01

标签: ios uiimage core-graphics image-manipulation cgimage

我可以从iPhone的照片库裁剪图像没有这样的问题:

CGRect topRect = CGRectMake(0, 0, image.size.width, image.size.height / 2);
CGImageRef topCroppedCGImageRef = CGImageCreateWithImageInRect(image.CGImage, 
                                                               topRect);
UIImage *croppedImage = [[UIImage alloc] initWithCGImage:topCroppedCGImageRef];
CGImageRelease(topCroppedCGImageRef);

然而,当图像来自相机时,这不起作用。具体而言,旋转裁剪的图像并且裁剪的部分不是预期的。看完之后听起来这个问题比较常见。但是,我已经尝试了各种代码修复,但它不是很有效(仍然有旋转,意外裁剪甚至失真问题)。所以我想真正理解为什么以上裁剪不仅适用于来自相机的图像。

为什么上述裁剪方法不适用于来自iPhone相机的图像?

1 个答案:

答案 0 :(得分:2)

正如这篇着名的帖子所指出的那样 - Resize a UIImage the right way,这是因为你忽略了EXIF定位支持等功能,在处理iPhone相机拍摄的照片时绝对必要

默认情况下(以肖像拍摄的照片)图像的EXIF orientation标志= 6表示图像逆时针旋转90度:

$ identify -format "%[EXIF:orientation]" myimage.jpg 
6