Вопрос по ios, objective-c – Как получить правильно повернутый UIImage из ALAssetRepresentation?

4

Я пытаюсь правильно повернутьUIImage изALAssetRepresentation с использованиемfullScreenImage метод. У меня есть несколько тестовых фотографий, снятых в различных ориентациях устройства; фотографии правильно отображаются в приложении Фотографии. Документация дляfullScreenImage говорит:

In iOS 5 and later, this method returns a fully cropped, rotated, and adjusted image—exactly as a user would see in Photos or in the image picker.

To create a correctly-rotated UIImage object from the CGImage, you use imageWithCGImage:scale:orientation: or initWithCGImage:scale:orientation:, passing the values of orientation and scale.

Учитывая документы, мой код выглядит так:

ALAssetRepresentation *rep = [asset defaultRepresentation];
UIImage *img = [UIImage
    imageWithCGImage:[rep fullScreenImage]
    scale:[rep scale]
    orientation:[rep orientation]];

Но в результатеUIImageРотация неверна. Когда я заменяю[rep orientation] сUIImageOrientationUpИзображение подходит для всех тестовых фотографий. Очевидно, я не решаюсь придерживаться этого решения, поскольку это похоже на взлом. Что я делаю неправильно?

Ваш Ответ

1   ответ
11
ALAssetRepresentation *rep = [asset defaultRepresentation];
UIImage *img = [UIImage
    imageWithCGImage:[rep fullScreenImage]
    scale:[rep scale]
    orientation:UIImageOrientationUp];

5 полноэкранные изображения уже повернуты (так что это всегда & # x201C; up & # x201D;). Под iOS & # xA0; 4 поведение отличается. Посмотри пожалуйстаОриентация не работает правильно с фото в ALAsset для более глубокого объяснения.

большое спасибо вам. Это решение также действительно для iOS7.0.6.
Ты жжешь! Я использовал[UIImage imageWithCGImage:[rep fullResolutionImage]] и ваше решение исправило проблему с вращением, спасибо! (Работает на iOS 8.1)
Представлено какrdar://11604456 и решена через месяц в предстоящем выпуске iOS 6, пропуская второй, слегка запутанный параграф. zoul
Спасибо! Я боролся с этим (и другими связанными проблемами) в течение почти недели сейчас. Это первый ответ, который действительно имел смысл и работал для iOS5 / iOS6. Ты мой герой ;)
Привет, Хендрик, и еще раз спасибо за ответ! Затем я отправлю запрос об ошибке в документацию, поскольку на самом деле не ясно, что второй абзац относится только к iOS4. PS: возможно, вы захотите оставить подпись под своими постами, смотритеthis meta thread. zoul

Похожие вопросы