如何正确裁剪在iPhone 4G上拍摄的图像(使用EXIF旋转数据)?

esi*_*ver 3 iphone camera rotation uiimage ios

伙计们,

我试图让这段代码与iPhone 4G上相机拍摄的图像一起使用是不成功的:

iPhone - CGImageCreateWithImageInRect旋转一些相机胶卷图片

此代码适用于裁剪"普通"图像 - 我从互联网上下载的图像或我的iPhone 3G拍摄的图像.

在调用旋转代码后,iPhone 4G相机照片似乎在图像的完全随机部分被裁剪.

我甚至尝试过使用这段代码: 调整从相机中提取的UIimages还可以调整UIimage吗?

然后我将图像"调整"为与实现旋转相同的尺寸,然后尝试裁剪图像而不考虑旋转.也没有运气.

有什么方法可以拍摄iPhone 4G相机上拍摄的图像并将其转换为与从互联网下载的图像具有相同品质/属性的图像(即,没有旋转信息和/或其像素被旋转从一开始就正确),以便我尝试执行的后续操作(在这种情况下裁剪)将按预期工作?

谢谢!

esi*_*ver 5

有一个很大样品 代码 进行网页该上.在iPhone 4G上,这一切都是不完整或错误的,因为iPhone 4G将旋转EXIF数据嵌入其JPEG中.此数据通过iOSO中的new imageOrientation属性公开.

使用具有EXIF旋转信息的图像裁剪区域的正确方法是使用此花花公子的代码,但不使用此行:

UIImage *resultImage = [[[UIImage alloc] initWithCGImage:resultImageRef] autorelease];
Run Code Online (Sandbox Code Playgroud)

你应该这样称呼:

UIImage *resultImage = [[[UIImage alloc] initWithCGImage:resultImageRef scale:1.0 orientation:originalImage.imageOrientation] autorelease];
Run Code Online (Sandbox Code Playgroud)

第二个调用将旋转信息从原始图像嵌入到UIImage中.

不幸的是,iOS 3.XX上没有这个电话; 幸运的是,您不太可能在这些设备上遇到带有EXIF信息的图像,因为相机无法拍摄带有旋转信息的照片.