Вращающийся портрет 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, взятый из библиотеки.
Ну, я надеюсь, это поможет!