Comment activer JPEG2000 (jp2) dans ImageMagick?

13

Je veux utiliser ImageMagick pour convertir certains fichiers de jp2 (JPEG-2000) en jpg. La commande pour le faire est très bien, mais je ne sais pas comment activer le délégué jp2 dans ImageMagick.

J'ai installé ImageMagick via le gestionnaire de paquets: sudo apt-get install ImageMagick.
J'utilise ImageMagick 6.8.9-9, c'est la version la plus récente d'ImageMagick disponible sur apt-get.

Actuellement, de nombreux types de fichiers principaux sont automatiquement inclus. Les bibliothèques suivantes ont un support intégré et sont répertoriées en tant que délégués:

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

Edit : j'aurais dû le mentionner, j'ai essayé les conversions de fichiers avant de commencer à me disputer openjpeg-2. Une commande comme convert input.jp2 output.jpgme donne le message d'erreur:

convert: aucun délégué de décodage pour ce format d'image `JP2 '@ error / constituent.c / ReadImage / 501.

Donc, je dois faire fonctionner jp2. La bibliothèque est pertinente openjpeg-2, et de ImageMagick la page délégués donne le tarball, openjpeg-2.0.0.tar.gz.

D'accord, je l'ai donc téléchargé et j'ai suivi les instructions d'installation fournies dans le fichier d'installation. Truc normal: cmake ., sudo make install.

Mais maintenant, comment puis-je configurer ImageMagick pour qu'il "décroche" open-jpeg-2.0.0? Dois-je reconstruire ImageMagick à partir de la source pour le faire? Ou existe-t-il une commande que je peux entrer pour que ImageMagick l’active? Ou un fichier que je devrais changer, etc.?

J'ai passé des heures et des siècles à étudier cela, à lire de nombreuses questions et réponses en ligne, mais je ne l'ai toujours pas fait. C'est un problème de ma connaissance de Linux plutôt que quelque chose à voir avec ImageMagick en soi , donc j'apprécierais vraiment si quelqu'un peut m'aider à comprendre quelle est l'étape manquante ici. Je vous remercie.

arokath
la source
J'ai résolu ce problème en utilisant graphicsmagick à la place, par exemplegm convert in.jp2 out.jpg
Sam Wilson

Réponses:

3

Installez libopenjp2-toolset utilisez opj_decompresspour convertir jp2 en autre chose:

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

Ce package fournit des outils de ligne de commande permettant des conversions entre plusieurs formats et fournit également des outils pour encoder et décoder les formats vidéo motion-jpeg2000:

  • opj_decompress: décode les fichiers j2k, jp2 et jpt en pgm, ppm, pnm, pgx et bmp.
  • opj_compress: encode les fichiers pnm, pgm, pgx, bmp et ppm en j2k et jp2.
  • opj_dump: les informations de vidage contiennent en j2k et jp2.
  • index_create: crée jp2 avec un fichier d'index JPIP à partir d'un fichier j2k.
  • frames_to_mj2: convertit les flux vidéo YUV au format mj2.
  • mj2_to_frames: convertit les flux vidéo mj2 au format YUV.
  • wrap_j2k_in_mj2: envelopper les flux codés j2k au format mj2.
  • extract-j2k-from_mj2: extrait les flux codés j2k du format mj2.
Bora M. Alper
la source
2

Je résous mon problème d'activation de la délégation openjp2 dans Imagemagick.

Assurez-vous d'avoir installé:

Maintenant, lorsque vous lancez, ./configurevous pouvez voir la délégation openjp2

DÉLÉGUÉS = mpeg jbig jng jpeg lcms lzma openjp2 png tiff zlib

Arnaud
la source
1

D'après mon installation par défaut d'Image Magick 6.8.9.9 à partir des référentiels Ubuntu 16.04, il apparaît que Jpeg200 ( .jp2) est entièrement pris en charge.

Les conversions peuvent être effectuées avec:

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

Pour les options de ligne de commande esp. concernant les options d'encodage ou la gestion des images en mosaïque, voir la documentation en ligne d'Image Magick .

Il faut dire cependant que ce jp2n'est pas répertorié dans la liste des formats supportés:

identify -list format

Néanmoins, cela fonctionne toujours apparemment bien.

Takkat
la source
1
Merci @Takkat, ce n'est pas le cas pour moi. Lorsque j'essaye this ( convert in.jp2 out.jpg), j'obtiens le message d'erreur que je n'ai pas le délégué jp2: convert: aucun délégué de décodage pour ce format d'image 'JP2' @ error / constituent.c / ReadImage / 501. Je suis au 6.8.9.9 (de convert --version: Version: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ). Vraiment étrange que votre version ne liste pas jp2 comme format mais fonctionne toujours! Les fichiers de sortie jpg sont-ils valides?
arokath du
@arokath: ouais les fichiers sont valides - j'ai testé la conversion de et vers. La lecture de JPG avec ImageViewer ou Gimp est OK, la lecture de JP2 avec Gimp ou Darktable était bien.
Takkat
Ce bug est également pertinent. J'ai peut-être libopenjpeg2installé à partir d'une autre application (je ne peux pas tester cela plus tard dans la journée).
Takkat
1
Hmm, j'ai regardé ce rapport de bug. Même avec l'installation libopenjp2-devpuis la reconstruction à partir de la source, cela ne fonctionne toujours pas. Je suis toujours bloqué à 100% malheureusement. Merci pour vos réponses!
arokath
1
Ce n'est pas une réponse à la question. Vous dites simplement que cela fonctionne pour vous! Et donner un lien vers la documentation n'est pas une réponse!
Azim
1

@arokath Comme vous, je n'ai pas pu trouver de support jp2 dans la version d'ImageMagick que j'ai installée via apt-get (Ubuntu 16.04.1 LTS).

Avant de construire à partir des sources (en suivant les documents ImageMagick ), j'ai installé d'abord libopenjp2-toolspuis libopenjp2-7-dev.

Remarque : je ne sais pas lequel a fait l'affaire: le résumé alphabétique à la fin du configuresupport jp2 répertorié en tant que OpenJP2, plutôt que JP2ce que je n'ai pas remarqué avant d'avoir installé libopenjp2-7-devet reconfiguré; il est tout à fait possible que cela n'ait fonctionné qu'avec la première lib.

Par ailleurs ./configure, makeet make install, je trouve que je avais besoin (comme suggéré dans la documentation) pour « configurer l'éditeur de liens dynamique »: sudo ldconfig /usr/local/lib.

Maintenant, la sortie de /usr/local/bin/identify -list formatcontient:

  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
la source
1
Merci pour cela. J'ai toujours des problèmes, malheureusement! J'ai installé libopenjp2-toolset libopenjp2-7-devutilisé apt-get, puis construit à partir des sources, puis exécuté sudo ldconfig /usr/local/lib. (En d'autres termes, suivi les documents). TOUJOURS pas JP2. Argh! Il fait ma tête. Je vais recommencer le processus au cas où.
arokath
Toujours pas de chance. J'ai remarqué que lors de l'exécution ./configure, il vérifie JP2 et ne le trouve pas: "vérification de LIBOPENJP2 ... non" . En prime, cela ne fonctionne plus pour les conversions JPEG en général. Lorsque j'ai essayé, convert in.png out.jpgil crée un fichier, mais il n'est pas valide - c'est un fichier PNG avec l'extension jpg. Je ne sais pas pourquoi JPEG devrait soudainement être cassé quand j'ai compilé à partir de la source!
arokath
Essayez d'exécuter "apt-get build-dep imagemagick" afin qu'il installe les bibliothèques nécessaires à imagemagick (ce seront celles avec lesquelles il a été construit dans la version, vous aurez donc toujours besoin de openjp2)
cbz