как изменить статус вращения файла изображения, не загружая его в память - PullRequest
5 голосов
/ 08 января 2011

Кто-то сказал мне какой-нибудь файл изображения, например, jpg, просто используйте несколько бит для контроля состояния вращения.

Есть ли способ изменить это состояние без загрузки файла изображения в основную память

1 Ответ

4 голосов
/ 08 января 2011

Можно пометить файл JPG, чтобы изменить способ его отображения без загрузки и декодирования изображения JPG в растровое изображение в памяти.Файл изображения JPG может дополнительно содержать раздел метаданных EXIF, часто используемый для описания устройства и обстоятельств, связанных с созданием или захватом изображения - модель камеры, выдержка, эквивалент ISO и т. Д.

EXIFметаданные также включают флаг ориентации, который можно использовать для информирования приложений средства просмотра изображений о том, как пиксели изображения JPG должны быть ориентированы на поверхности дисплея.Этот флаг ориентации (и метаданные EXIF) можно прочитать и записать в файл JPG без загрузки или декодирования данных изображения пикселя.Это также означает, что ориентация может изменяться несколько раз без потери детализации изображения, поскольку изображение не распаковывается, не поворачивается, а затем повторно сжимается в новый файл на диске.

Для этого вам потребуется C #код, который будет читать формат файла JFIF файла JPG, а также найти и извлечь раздел EXIF.Я не думаю, что встроенный считыватель изображений .NET предоставляет что-то подобное.

Обратите внимание, что не все читатели JPG поддерживают флаг ориентации EXIF.Я полагаю, что встроенное приложение предварительного просмотра изображений Windows учитывает флаг ориентации EXIF ​​в текущих версиях Windows, но не в более ранних версиях Windows, таких как Windows XP.

Подробнее о флаге ориентации EXIF ​​здесь:1009 *http://jpegclub.org/exif_orientation.html

...