Как включить JPEG2000 (jp2) в ImageMagick?

13

Я хочу использовать ImageMagick для конвертации некоторых файлов из jp2 (JPEG-2000) в jpg. Команда для этого хороша, но я не знаю, как включить делегат jp2 в ImageMagick.

Я установил ImageMagick с помощью менеджера пакетов: sudo apt-get install ImageMagick.
Я использую ImageMagick 6.8.9-9, это самая последняя версия ImageMagick, доступная с apt-get.

В настоящее время многие основные типы файлов включаются автоматически. Следующие библиотеки имеют встроенную поддержку и перечислены как делегаты:

bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib

Изменить : я должен был упомянуть, я пытался преобразования файлов, прежде чем начать спорить с openjpeg-2. Команда вроде convert input.jp2 output.jpgдает мне сообщение об ошибке:

convert: нет делегата декодирования для этого формата изображения `JP2 '@ error / constitute.c / ReadImage / 501.

Итак, мне нужно, чтобы jp2 работал. Соответствующая библиотека есть openjpeg-2, а на странице делегатов ImageMagick есть архив openjpeg-2.0.0.tar.gz.

Итак, я скачал его и следовал инструкциям по установке, приведенным в установочном файле. Нормальный материал: cmake ., sudo make install.

Но теперь, как мне настроить ImageMagick, чтобы он «подхватывал» open-jpeg-2.0.0? Нужно ли для этого перестраивать ImageMagick из исходного кода? Или есть команда, которую я могу ввести, чтобы получить ImageMagick, чтобы включить его? Или файл, который я должен изменить, и т.д?

Я провел целую вечность, изучая это, прочитал много вопросов и ответов онлайн, но я все еще не взломал это. Это вопрос моих знаний о Linux, а не то, что связано с ImageMagick как таковым , поэтому я был бы очень признателен, если бы кто-то мог помочь мне выяснить, в чем заключается пропущенный шаг. Спасибо.

arokath
источник
Я решил эту проблему, используя вместо этого graphicsmagick, напримерgm convert in.jp2 out.jpg
Сэм Уилсон

Ответы:

3

Установите libopenjp2-toolsи используйте opj_decompressдля преобразования jp2 во что-то другое:

sudo apt install libopenjp2-tools
opj_decompress -i m_3712213_sw_10_h_20160625_20161004.jp2 -OutFor TIF -o my.tif

Этот пакет содержит инструменты командной строки, позволяющие выполнять конвертацию между несколькими форматами, а также инструменты для кодирования и декодирования видеоформатов motion-jpeg2000:

  • opj_decompress: декодирует файлы j2k, jp2 и jpt в pgm, ppm, pnm, pgx и bmp.
  • opj_compress: кодирует файлы pnm, pgm, pgx, bmp и ppm в j2k и jp2.
  • opj_dump: информация о дампе содержится в j2k и jp2.
  • index_create: создать jp2 с файлом индекса JPIP из файла j2k.
  • frames_to_mj2: конвертировать видеопотоки YUV в формат mj2.
  • mj2_to_frames: конвертировать видео потоки mj2 в формат YUV.
  • wrap_j2k_in_mj2: свернуть кодовые потоки j2k в формат mj2.
  • extract-j2k-from_mj2: извлечь кодовые потоки j2k из формата mj2.
Бора М. Альпер
источник
2

Я решаю свою проблему с включением делегирования openjp2 в Imagemagick.

Убедитесь, что вы установили:

Теперь при запуске ./configureвы можете увидеть делегирование openjp2

ДЕЛЕГАТЫ = mpeg jbig jng jpeg lcms lzma openjp2 png tiff zlib

Arnaud
источник
1

Из моей установки по умолчанию Image Magick 6.8.9.9 из репозиториев Ubuntu 16.04 видно, что Jpeg200 ( .jp2) полностью поддерживается.

Преобразования могут быть сделаны с:

convert in.png out.jp2
convert in.jp2 out.jpg

Для параметров командной строки, особенно в отношении параметров кодирования или обработки мозаичных изображений см. онлайн-документацию Image Magick .

Следует отметить, однако, что jp2не указан в списке поддерживаемых форматов:

identify -list format

Тем не менее, по-видимому, все еще работает нормально.

Takkat
источник
1
Спасибо @Takkat, это не так для меня, хотя. Когда я пытаюсь это ( convert in.jp2 out.jpg), я получаю сообщение об ошибке, что у меня нет делегата jp2: convert: нет делегата декодирования для этого формата изображения 'JP2' @ error / constitute.c / ReadImage / 501. Я нахожусь на 6.8.9.9 (от convert --version: Версия: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ). Действительно странно, что ваша версия не перечисляет jp2 как формат, но все еще работает! Допустимы ли выходные файлы jpg?
арокат
PS: в вашей ссылке есть опечатка: php не
ph2
@arokath: да, файлы действительны - я проверял конвертацию из и в. Чтение JPG с ImageViewer или Gimp в порядке, чтение JP2 с Gimp или Darktable было в порядке.
Таккат
1
Хм, я посмотрел этот отчет об ошибке. Даже с установкой, libopenjp2-devа затем восстановлением из исходного кода, он все еще не работает. Я на 100% застрял до сих пор, к сожалению. Спасибо за ваши ответы, хотя!
арокат
1
Это не ответ на вопрос. Вы просто говорите, что это работает для вас! И дать ссылку на документацию не ответ!
Азим
1

@arokath Как и вы, мне не удалось найти поддержку jp2 в версии ImageMagick, которую я установил через apt-get (Ubuntu 16.04.1 LTS).

Перед сборкой из исходного кода (следуя документации ImageMagick ) я сначала установил, libopenjp2-toolsа затем libopenjp2-7-dev.

Примечание : я не уверен, какой из них добился цели: алфавитное резюме в конце configureперечисленной поддержки jp2 OpenJP2, а не то, JP2что я не заметил, пока не установил libopenjp2-7-devи не переконфигурировал ; вполне возможно, что он работал только с первой библиотекой.

Кроме того ./configure, makeи make installя обнаружил , что мне нужно (как это было предложено в документации) , чтобы «настроить динамический компоновщик»: sudo ldconfig /usr/local/lib.

Теперь вывод /usr/local/bin/identify -list formatсодержит:

  J2C* rw-   JPEG-2000 Code Stream Syntax (2.1.0)
  J2K* rw-   JPEG-2000 Code Stream Syntax (2.1.0)
  JNX* r--   Garmin tile format
  JP2* rw-   JPEG-2000 File Format Syntax (2.1.0)
  JPC* rw-   JPEG-2000 Code Stream Syntax (2.1.0)
  JPM* rw-   JPEG-2000 File Format Syntax (2.1.0)
  JPT* rw-   JPEG-2000 File Format Syntax (2.1.0)
 JSON  -w+   The image format and characteristics
user3294778
источник
1
Спасибо за это. У меня все еще есть проблемы, к сожалению! Я установил libopenjp2-toolsи libopenjp2-7-devиспользовал apt-get, затем собрал из источника, затем запустил sudo ldconfig /usr/local/lib. (Другими словами, следовал документам). ЕЩЕ № JP2. Argh! Это заставляет меня задуматься. На всякий случай я снова пробежусь через процесс.
арокат
Все еще не повезло. Я заметил, что при запуске ./configureон проверяет JP2 и не находит его: «проверка на LIBOPENJP2 ... нет» . В качестве бонуса, теперь он не работает для преобразования JPEG в целом. Когда я попробовал, convert in.png out.jpgон создает файл, но он недействителен - это файл PNG только с расширением jpg. Я не знаю, почему JPEG должен внезапно сломаться при компиляции из исходного кода!
арокат
Попробуйте запустить «apt-get build-dep imagemagick», чтобы он установил библиотеки, необходимые для imagemagick (это будут те, с которыми он был собран в релизе, так что вам все равно понадобится openjp2)
cbz