3

大家好,

我在旋转以UIImage某种WIDTH < HEIGHT方式具有等于UIImageOrientationRight. 我不确定这是怎么回事,但它发生在我的库中用 iPhone 4 拍摄的一些图像上。

这是我的代码(确实有效,但前提是方向等于UIImageOrientationUp):

UIGraphicsBeginImageContextWithOptions(rotatedScaledRect.size, NO, 0.0);
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(myContext, kCGInterpolationHigh);

CGContextTranslateCTM(myContext,
                      (rotatedScaledRect.size.width/2),
                      (rotatedScaledRect.size.height/2));
CGContextConcatCTM(myContext, transformation);

CGContextScaleCTM(myContext, 1.0, -1.0);

CGContextDrawImage(myContext, CGRectMake(-roundf(newImage.size.width / 2), -roundf(newImage.size.height / 2), newImage.size.width, newImage.size.height), [newImage CGImage]);

newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

我需要申请CGContextConcatCTM,因为我对图像进行了几次级联转换。

我尝试了几种不同的方法都无济于事。

在此先感谢您的帮助。

4

1 回答 1

0

首先,请原谅我的英语,因为它不是我的母语。我希望现在给出这个答案还为时不晚!

因此,我在从使用 iPhone 或 iPod 相机拍摄的库中加载照片时遇到了类似的问题。如果这是您的情况,您可以在此处找到一些信息:https ://discussions.apple.com/thread/2495567?start=30&tstart=0 ,特别是来自“Apple 选择在 EXIF 数据中使用方向标志”的答案通知显示图像的程序如何旋转它,以便正确显示图像。”

因此,要从使用 iPhone 相机拍摄的图库中加载照片,您必须执行以下操作:

ALAssetRepresentation *assetRep = [photo defaultRepresentation];
CGImageRef imageRef = [assetRep fullResolutionImage];
UIImage *image = [UIImage imageWithCGImage:imageRef scale:[assetRep scale] orientation:[assetRep orientation]];

其中 photo 是从库中获取的 ALAsset 对象。

好吧,我希望这会有所帮助!

于 2013-05-16T13:21:24.987 回答