Ios 从照片库裁剪UIImage与iPhone摄像头

Ios 从照片库裁剪UIImage与iPhone摄像头,ios,uiimage,core-graphics,image-manipulation,cgimage,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, top

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

正如这篇著名的文章所指出的,这是因为您忽略了诸如EXIF定向支持之类的功能,这是处理iPhone相机拍摄的照片时绝对必要的

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

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