3

皆さんこんにちは、

何らかの形で に等しい向きを持つポートレートUIImage(つまり) を回転させる際に問題が発生しています。これがどのようになるのかはわかりませんが、iPhone 4 でキャプチャしたライブラリ内のいくつかの画像で発生します。WIDTH < HEIGHTUIImageOrientationRight

これは私のコードです(これは機能しますが、方向が に等しい場合のみ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 データで Orientation フラグを使用することを選択した」という回答から画像を表示するプログラムに、画像が正しく表示されるように画像を回転する方法を通知します。」

したがって、iPhone カメラで撮影したライブラリから写真をロードするには、次のようにする必要があります。

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

ここで、写真はライブラリから取得した ALAsset オブジェクトです。

さて、これが役立つことを願っています!

于 2013-05-16T13:21:24.987 に答える