Исправление ориентации UIImage, хранящегося в документе, с потерянными тегами EXIF

Я сталкивался с подобной проблемой для других на SO в отношении ориентации изображений, снятых с помощью камеры iPad. По сути, я снимаю UIImage с помощью камеры на iPad. Когда я показываю его, он поворачивается на 90 градусов.

Из прочтения других вопросов и ответов я теперь понимаю, что когда камера делает фотографию, она сохраняет тег EXIF, который определяет ориентацию фотографии. Обычно это позволяет всем приложениям Mac и iOS читать данные об ориентации. Тем не менее, я храню свои изображения в каталоге документов как NSData (преобразованный с помощью UIImagePNGRepresentation и сохраняющий URL в основных данных. Я предполагаю, что в результате этого процесса я теряю EXIF-тег ориентации, поэтому при его получении отображается неправильно.

Кто-нибудь может придумать способ исправить это?

Мысли, советы и указатели приветствуются.

Большое спасибо

3 ответа

Решение

Метаданные EXIF ​​не точны в ориентации, они точны в данных GPS, они будут обнаруживать только 90 & 180 & 270 с некоторыми ошибками, попробуйте это

iOS UIImagePickerController результат ориентации изображения после загрузки

Удачи

EXIF - это то, что находится в файлах изображений, а не UIImage. Когда вы делаете снимок с помощью камеры, UIImagePicker никогда не сохраняет его в файл, поэтому EXIF ​​еще не существует.

В вашем случае, однако, проблема не в ориентации iPad. Я считаю, что UIImagePNGRepresentation всегда сохраняет его повернутым на 90 градусов (независимо от поворота). Вам просто нужно повернуть его перед генерацией PNG. Я не знаю, почему это происходит, но вам просто нужно обойти это.

Посмотрите на эту библиотеку: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/ У него есть код, чтобы сделать снимок и удалить информацию об ориентации преобразовав это.

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