Как прочитать миниатюру встраивания из изображений JPEG? - PullRequest
4 голосов
/ 25 августа 2009

Я пишу просмотрщик миниатюр на С ++.

Сначала я использую информацию EXIF, чтобы получить эскиз изображения, но эскиз в EXIF ​​плох, с черными полосами. Итак, я хочу получить встроенный эскиз JPEG, как я могу это сделать?

Еще один вопрос: соответствует ли внедренное миниатюра jpeg значению EXIF ​​thumbnial?

Ответы [ 4 ]

6 голосов
/ 25 августа 2009

Если миниатюра EXIF ​​плохая, вы можете создать свой собственный из самого JPEG, без необходимости полностью декодировать JPEG.

Найдите исходный код для EPEG . Он является частью проекта Enlightenment на SourceForge и был частью старого EFL год назад. Вы по-прежнему можете получить его из некоторых старых SVN-коммитов или из исходного архива, который может быть.

По сути, EPEG собирает коэффициенты DCT из изображения и выполняет для них операцию масштабирования. Коэффициент DCT обычно используется в качестве базового коэффициента для блока пикселей 8x8. Вы можете рассматривать это как один пиксель. В результате у вас есть (в вычислительном отношении бесплатно) миниатюра ровно на 1/8 размера исходного изображения. Масштабируйте его так же, как любые данные изображения, до нужных размеров.

2 голосов
/ 31 декабря 2011

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

Однако верно сказать, что JFIF 1.02 поддерживает миниатюру изображения. Эскиз может быть сохранен в маркере JFIF APP0 или в официальном маркере расширения JFXX APP0; миниатюра может быть несжатой RGB, JPEG или в виде паллет. Увидеть http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#JFIF_segment_format для деталей.

0 голосов
/ 22 июня 2010

www.exiv2.org в моих глазах это плохое решение. Просто слишком много дел для других проектов. Например, Expat и Zlib. Если вы хотите предложить более легкое решение, которое вы можете поддерживать самостоятельно, я бы порекомендовал написать собственный EXIF-декодер.

0 голосов
/ 25 августа 2009

Самый быстрый и рекомендуемый способ - библиотеки.

Например, www.exiv2.org может предоставить вам библиотеку для встроенного эскиза и извлечения информации из EXIF. Есть много альтернатив, но я думаю, что это хорошее решение.

...