我可以从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相机的图像?
答案 0 :(得分:2)
正如这篇着名的帖子所指出的那样 - Resize a UIImage the right way,这是因为你忽略了EXIF定位支持等功能,在处理iPhone相机拍摄的照片时绝对必要。
默认情况下(以肖像拍摄的照片)图像的EXIF orientation标志= 6表示图像逆时针旋转90度:
$ identify -format "%[EXIF:orientation]" myimage.jpg
6