1

我可以从 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 相机的图像?

4

1 回答 1

2

正如这篇著名的帖子以正确的方式调整 UIImage 的大小所指出的,这是因为您遗漏了诸如 EXIF 方向支持之类的功能,这是处理 iPhone 相机拍摄的照片时的绝对必要条件

默认情况下(纵向拍摄的照片),图像的EXIF 方向标志 = 6,这意味着图像逆时针旋转 90 度:

$ identify -format "%[EXIF:orientation]" myimage.jpg 
6
于 2012-10-02T21:49:20.070 回答