¿Cómo habilitar JPEG2000 (jp2) en ImageMagick?

13

Quiero usar ImageMagick para convertir algunos archivos de jp2 (JPEG-2000) a jpg. El comando para hacerlo está bien, pero no sé cómo habilitar el delegado jp2 en ImageMagick.

He instalado ImageMagick a través del gestor de paquetes: sudo apt-get install ImageMagick.
Estoy usando ImageMagick 6.8.9-9, esta es la versión más actualizada de ImageMagick disponible en apt-get.

Actualmente, muchos de los tipos de archivos principales se incluyen automáticamente. Las siguientes bibliotecas tienen soporte incorporado y se enumeran como delegados:

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

Editar : Debería haber mencionado, intenté conversiones de archivos antes de comenzar a discutir openjpeg-2. Un comando como convert input.jp2 output.jpgme da el mensaje de error:

convertir: sin delegado de decodificación para este formato de imagen `JP2 '@ error / constitut.c / ReadImage / 501.

Entonces, necesito que jp2 funcione. La biblioteca es relevante openjpeg-2, y de ImageMagick página delegados da el paquete de archivos, openjpeg-2.0.0.tar.gz.

Bien, entonces lo descargué y seguí las instrucciones para instalar que figuran en el archivo de instalación. Cosas normales: cmake ., sudo make install.

Pero ahora, ¿cómo configuro ImageMagick para que 'se recupere' open-jpeg-2.0.0? ¿Tengo que reconstruir ImageMagick desde la fuente para hacerlo? ¿O hay un comando que puedo ingresar para obtener ImageMagick para habilitarlo? ¿O un archivo que debería cambiar, etc.?

He pasado siglos investigando esto, leí muchas preguntas y respuestas en línea, pero aún no lo descifré. Es un problema de mi conocimiento de Linux en lugar de algo relacionado con ImageMagick per se , por lo que realmente agradecería que alguien pueda ayudarme a descubrir cuál es el paso que falta aquí. Gracias.

arokath
fuente
Resolví este problema usando graphicsmagick en su lugar, por ejemplogm convert in.jp2 out.jpg
Sam Wilson

Respuestas:

3

Instalar libopenjp2-toolsy usar opj_decompresspara convertir jp2 a otra cosa:

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

Este paquete proporciona herramientas de línea de comandos que permiten conversiones entre varios formatos y también proporciona herramientas para codificar y decodificar formatos de video motion-jpeg2000:

  • opj_decompress: decodifica archivos j2k, jp2 y jpt en pgm, ppm, pnm, pgx y bmp.
  • opj_compress: codifica archivos pnm, pgm, pgx, bmp y ppm en j2k y jp2.
  • opj_dump: la información de volcado contiene en j2k y jp2.
  • index_create: crea jp2 con un archivo de índice JPIP a partir de un archivo j2k.
  • frames_to_mj2: convierte secuencias de video YUV a formato mj2.
  • mj2_to_frames: convierte secuencias de video mj2 a formato YUV.
  • wrap_j2k_in_mj2: ajusta los flujos de código j2k en formato mj2.
  • extract-j2k-from_mj2: extrae flujos de código j2k del formato mj2.
Bora M. Alper
fuente
2

Resuelvo mi problema de habilitar la delegación de openjp2 en Imagemagick.

Asegúrese de tener instalado:

Ahora, cuando ejecutas./configure puedes ver la delegación de openjp2

DELEGADOS = mpeg jbig jng jpeg lcms lzma openjp2 png tiff zlib

Arnaud
fuente
1

Desde mi instalación predeterminada de Image Magick 6.8.9.9 de los repositorios de Ubuntu 16.04, parece que Jpeg200 ( .jp2) es totalmente compatible.

Las conversiones se pueden hacer con:

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

Para las opciones de línea de comando esp. con respecto a las opciones de codificación o el manejo de imágenes en mosaico, consulte la documentación en línea de Image Magick .

Sin embargo, debe decirse que jp2no figura en la lista de formatos admitidos:

identify -list format

Sin embargo, aparentemente todavía funciona bien.

Takkat
fuente
1
Gracias @Takkat, ese no es el caso para mí. Cuando intento esto ( convert in.jp2 out.jpg), recibo el mensaje de error de que no tengo el delegado jp2: convert: sin delegado de decodificación para este formato de imagen 'JP2' @ error / constitut.c / ReadImage / 501. Estoy en 6.8.9.9 (de convert --version: Versión: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ). ¡Es realmente extraño que su versión no incluya jp2 como formato, pero aún así funciona! ¿Son válidos los archivos de salida jpg?
arokath
@arokath: sí, los archivos son válidos. Probé la conversión desde y hacia. Leer JPG con ImageViewer o Gimp está bien, leer JP2 con Gimp o Darktable estuvo bien.
Takkat
Este error también es relevante. Es posible que haya libopenjpeg2instalado desde otra aplicación (no puedo probar esto hasta más tarde hoy).
Takkat
1
Hmm, miré ese informe de error. Incluso con la instalación libopenjp2-devy reconstrucción desde el origen, todavía no funciona. Estoy 100% atrapado todavía por desgracia. ¡Gracias por tus respuestas, sin embargo!
arokath
1
Esta no es una respuesta a la pregunta. ¡Solo estás diciendo que te funciona! ¡Y dar un enlace a la documentación no es una respuesta!
Azim
1

@arokath Al igual que usted, no pude encontrar soporte para jp2 en la versión de ImageMagick que instalé a través de apt-get (Ubuntu 16.04.1 LTS).

Antes de construir desde la fuente (siguiendo los documentos de ImageMagick ), instalé primero libopenjp2-toolsy luego libopenjp2-7-dev.

Nota : No estoy seguro de cuál hizo el truco: el resumen alfabético al final del configuresoporte de jp2 enumerado como OpenJP2, en lugar de JP2lo que no noté hasta que lo instalé libopenjp2-7-devy reconfiguré; es muy posible que funcionó solo con la primera lib.

Además ./configure, makey make install, descubrí que necesitaba (como se sugiere en los documentos) a "configurar el enlazador dinámico": sudo ldconfig /usr/local/lib.

Ahora, la salida de /usr/local/bin/identify -list formatcontiene:

  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
fuente
1
Gracias por esto. ¡Todavía tengo problemas, desafortunadamente! Instalé libopenjp2-toolsy libopenjp2-7-devusé apt-get, luego construí desde la fuente, luego corrí sudo ldconfig /usr/local/lib. (En otras palabras, siguió los documentos). TODAVÍA no JP2. Argh! Me está molestando. Volveré a ejecutar el proceso por si acaso.
arokath
Aún no hay suerte. Noté que cuando se ejecuta ./configure, comprueba JP2 y no lo encuentra: "comprobando LIBOPENJP2 ... no" . Como beneficio adicional, ahora no funciona para las conversiones JPEG en general. Cuando lo intenté convert in.png out.jpg, crea un archivo, pero no es válido: es un archivo PNG solo con la extensión jpg. ¡No sé por qué JPEG debería romperse repentinamente cuando he compilado desde la fuente!
arokath
Intente ejecutar "apt-get build-dep imagemagick" para que instale las bibliotecas necesarias para imagemagick (estas serán las que se crearon en la versión, por lo que aún necesitará openjp2)
cbz