Исправление ориентации 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/ У него есть код, чтобы сделать снимок и удалить информацию об ориентации преобразовав это.