Delphi. Читаем ориентацию из Exif для Jpg файлов и ориентируем правильно

Каждый программист встречается с “Battle”. Иногда сидишь сутками, решая проблему и как прекрасен тот момент, когда понимаешь, как это можно решить.

Столкнулся с тем, что если загрузить методом idHTTP.Get jpg файл , у которого в exif данных указана ориентация, скажем “Rotate 90°”, то эта ориентация слетает, и это никак не вписывалось в мои планы. Хотелось нормальной ориентации)

Помучившись какое-то время с этим вопросом, я понял следующее.
1. Нужно научиться читать exif информацию
2. Нужно научиться поворачивать картинки, причем делать это быстро.

Определение ориентации

По 1 вопросу поиск дал отличнейший сайт. Это отличная библиотека для чтения exif информации. Скачав, установив все, я запустил демку. Вот как это выглядело.

Как видно ориентация у данной картинки нормальная и следовательно поворачивать её не нужно.

Следующие файлы я скопировал из скачанных файлов и положил их в папку, рядом с программой. Добавил это папку в lib самой delphi. Файл uBmpRot я создал сам – это код для поворота картинки.

Далее, нам понадобится такая функция, для приведения ориентации в человеческий вид.

Далее

Ну ок, определять ориентацию мы научились. Теперь нам нужно научиться поворачивать изображение.

Поворот Битмапа

На этом сайте я взял код для поворота битмапа и загнал его в юнит uBmpRot. Вот этот код

Конечное решение

Собрав всё вместе, мы получим что-то вроде…

Вот в принципе и всё! Но для меня это были сутки мучений) Всем удачи…

 

This entry was posted in Delphi. Bookmark the permalink.