2012-06-04 12 views
4

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

В прошивке 5 и позже, этот метод возвращает полностью обрезанный, поворачивать и отрегулировать изображение, точно так, как пользователь будет видеть на фотографиях или в изображении подборщика.

Чтобы создать правильно повернутые UIImage объекта из CGImage, вы используете imageWithCGImage:scale:orientation: или initWithCGImage:scale:orientation:, передавая значения orientation и scale.

Учитывая документы, мой код выглядит следующим образом:

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

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

ответ

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

Правильно, поскольку под iOS 5 полноэкранные изображения уже повернуты (так что это всегда «вверх»). В iOS 4 поведение отличается. Пожалуйста, см. Orientation does not behave correctly with Photo in ALAsset для более подробного объяснения.

+0

Здравствуйте, Хендрик, и еще раз спасибо за ответ! Затем я отправлю запрос об ошибке в отношении документации, так как на самом деле не ясно, что второй абзац применим только к iOS4. PS: вы можете оставить свою подпись с ваших сообщений, см. [Этот мета-поток] (http://meta.stackexchange.com/questions/5029/are-taglines-signatures-disallowed). – zoul

+0

Представлен как [rdar: // 11604456] (http://openradar.appspot.com/11604456) и разрешен месяц спустя в выпуске iOS 6, оставив второй, слегка запутанный абзац. – zoul

+0

Спасибо! Я боролся с этим (и другими связанными проблемами) уже около недели. Это первый ответ, который действительно имел смысл и работал на iOS5/iOS6. Ты мой герой;) –