UIImageOrientation неверно для левого / правого от загруженного UIImage?
Я загружаю JPG, помеченные произвольными данными об ориентации EXIF (одна из 8 ориентаций). Я скачал восемь образцов файлов изображений отсюда (ссылка на это сообщение в блоге).
Изображение 8 представляет тег 8 EXIF, который представляет собой поворот на 90 градусов по часовой стрелке. Это можно подтвердить, посмотрев на это изображение в тупой программе просмотра, например, в Paintbrush.
Однако, когда я загружаю его в UIImage в моем проекте iOS и вызываю -imageOrientation
на это я получаю UIImageOrientationLeft
, Согласно документам здесь,
UIImageOrientationLeft
Изображение поворачивается на 90 градусов против часовой стрелки, как показано здесь.
... это не то, как выглядит изображение.
Противоположность верна для ориентации EXIF 6, которая, как я ожидаю, будет отображаться как слева, но как справа.
Документы здесь не так? Я что-то упускаю из виду? Благодарю.
3 ответа
У меня была такая же проблема некоторое время. Кажется, что документация UIImageOrientation описывает, что происходит с вертикальным изображением, если вы применяете указанную ориентацию. Например, если вы возьмете вертикальное изображение и примените UIImageOrientationLeft, оно получится повернутым против часовой стрелки на 90°.
Документация exif, с другой стороны, описывает, какова ориентация данных изображения для генерации вертикального изображения. Таким образом, для кода EXIF 8 данные изображения должны быть повернуты на 90 ° по часовой стрелке, чтобы получить изображение в вертикальном положении.
Оказывается, что только UIImageOrientationLeft и UIImageOrientationRight имеют эту проблему, поскольку все остальные выглядят одинаково в любом случае.
Я думаю, что проблема заключается в исходной точке (где применяется поворот). При использовании UIImage источник находится в верхнем левом углу, а при использовании CGImage источник - в нижнем левом углу.
Я нашел интересный ответ на это: http://blog.logichigh.com/2008/06/05/uiimage-fix/