Вращающийся портрет UIImage, который каким-то образом имеет ориентацию UIImageOrientationRight

Всем привет,

У меня проблема с поворотом портрета 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 потому что у меня есть несколько связанных преобразований в изображение.

Я пробовал несколько разных подходов безрезультатно.

Заранее спасибо за помощь.

1 ответ

Прежде всего, извините за мой английский, потому что это не мой родной язык. Надеюсь, еще не поздно дать этот ответ!

Из-за этого у меня была похожая проблема при загрузке фотографий из библиотеки, сделанной на iPhone или iPod cammera. Если это ваш случай, вы можете найти некоторую информацию здесь: https://discussions.apple.com/thread/2495567?start=30&tstart=0, в частности, из ответа, который говорит: "Apple решила использовать флаг ориентации в данных EXIF информировать программу, отображающую изображение, о том, как повернуть его, чтобы изображение отображалось правильно."

Итак, для загрузки фотографии из библиотеки, сделанной на iPhone Cammera, вам необходимо сделать следующее:

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

где фотография - это объект ALAsset, взятый из библиотеки.

Ну, я надеюсь, это поможет!

Другие вопросы по тегам