Декодируйте JPEG для получения несжатых данных

StackOverflow https://stackoverflow.com/questions/1009091

  •  06-07-2019
  •  | 
  •  

Вопрос

Я хочу декодировать файлы JPEG и получать несжатый декодированный вывод в формате BMP / RGB. Я использую GNU / Linux и C / C ++.

Я посмотрел на libjpeg, но, похоже, не было доступной документации. Итак, мои вопросы:

<Ол>
  • Где находится документация по libjpeg?
  • Можете ли вы предложить другие библиотеки jpeg-декомпрессии на основе C?
  • Это было полезно?

    Решение

    Документация для libjpeg поставляется с исходным кодом. Так как вы еще не нашли его:

    Загрузите архив исходного кода и откройте файл libjpeg.doc . Это обычный файл ASCII, а не документ Word, поэтому лучше откройте его в блокноте или другом редакторе ASCII.

    Есть и другие файлы .doc. Большинство из них не настолько интересны.

    К сожалению, я не могу рекомендовать другую библиотеку, кроме libjpeg. Я попробовал пару альтернатив, но Libjpeg всегда побеждал. С ним довольно легко работать, если вы уже освоили основы. Кроме того, это самая полная и самая стабильная библиотека jpeg.

    Другие советы

    MagickWand - это C API для ImageMagick:

    http://imagemagick.org/script/magick-wand.php

    Я не использовал его, но документация выглядит довольно обширной.

    Вы должны проверить QImage Qt. Он имеет довольно простой интерфейс, который делает эту задачу действительно простой. Установка довольно проста для любой платформы.

    Если Qt излишне, вы можете попробовать Magick ++ http://www.imagemagick.org/Magick++/ . Он поддерживает аналогичные операции и также хорошо подходит для такого рода задач. В прошлый раз, когда я использовал его, я немного боролся с зависимостями для него в Windows, но не помню особых проблем в Linux.

    Для класса Image в Magick ++ вам, вероятно, понадобится функция getConstPixels.

    У меня есть код, который вы можете скопировать (или просто использовать в качестве ссылки) для загрузки изображения в формате jpeg с помощью библиотеки libjpeg.

    Вы можете просмотреть код здесь:
    http://code.google .com / р / kgui / источник / просмотр / багажник / kguiimage.cpp

    Просто найдите функцию LoadJPGImage .

    Код настроен для обработки привязки c ++ моего класса DataHandle к нему для загрузки изображения, чтобы изображение могло быть файлом или данными, уже находящимися в памяти или чем-либо еще.

    Небольшое нестандартное решение - приобрести копию netpbm инструментов, которые преобразуют изображения от практически любого формата до любого другого формата через один из нескольких очень простых промежуточных форматов. Они хорошо работают из оболочки и чаще всего используются в каналах для чтения произвольного изображения, выполнения над ним операции и записи его в другой формат.

    Форматы pbm могут быть такими же простыми, как простой заголовок ASCII, за которым следуют данные RGB в ASCII или двоичном формате. Предполагается, что они достаточно просты в использовании и не требуют библиотеки для реализации.

    JPEG поддерживается в netpbm фильтрами чтения и записи, которые реализованы поверх libjpeg.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top