Come abilitare JPEG2000 (jp2) in ImageMagick?


13

Voglio usare ImageMagick per convertire alcuni file da jp2 (JPEG-2000) in jpg. Il comando per farlo va bene, ma non so come abilitare il delegato jp2 in ImageMagick.

Ho installato ImageMagick via gestore di pacchetti: sudo apt-get install ImageMagick.
Sto usando ImageMagick 6.8.9-9, questa è la versione più aggiornata di ImageMagick disponibile da apt-get.

Attualmente, molti dei principali tipi di file sono inclusi automaticamente. Le seguenti librerie hanno il supporto integrato e sono elencate come delegate:

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

Modifica : avrei dovuto menzionare, ho provato le conversioni di file prima di iniziare a litigare openjpeg-2. Un comando come convert input.jp2 output.jpgmi dà il messaggio di errore:

convertire: nessun delegato di decodifica per questo formato immagine `JP2 '@ errore / constit.c / ReadImage / 501.

Quindi, devo far funzionare jp2. La biblioteca rilevante è openjpeg-2, e di ImageMagick pagina delegati dà il tarball, openjpeg-2.0.0.tar.gz.

Va bene, quindi l'ho scaricato e ho seguito le istruzioni per l'installazione fornite nel file di installazione. Roba normale: cmake ., sudo make install.

Ma ora, come configuro ImageMagick in modo che "raccolga" open-jpeg-2.0.0? Devo ricostruire ImageMagick dalla fonte per farlo? Oppure c'è un comando che posso inserire per ottenere ImageMagick per abilitarlo? O un file che dovrei cambiare, ecc.?

Ho passato anni e anni a esaminare questo, a leggere molte domande e risposte online, ma non l'ho ancora risolto. È un problema delle mie conoscenze di Linux piuttosto che qualcosa a che fare con ImageMagick in , quindi apprezzerei molto se qualcuno potesse aiutarmi a capire quale sia il passo mancante. Grazie.


Ho risolto questo problema usando invece la grafica, ad esempiogm convert in.jp2 out.jpg
Sam Wilson

Risposte:


3

Installa libopenjp2-toolse usa opj_decompressper convertire jp2 in qualcos'altro:

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

Questo pacchetto fornisce strumenti da riga di comando che consentono conversioni tra diversi formati e fornisce anche strumenti per codificare e decodificare i formati video motion-jpeg2000:

  • opj_decompress: decodifica i file j2k, jp2 e jpt in pgm, ppm, pnm, pgx e bmp.
  • opj_compress: codifica i file pnm, pgm, pgx, bmp e ppm in j2k e jp2.
  • opj_dump: le informazioni sul dump contengono in j2k e jp2.
  • index_create: crea jp2 con il file di indice JPIP da un file j2k.
  • frames_to_mj2: converte i flussi video YUV in formato mj2.
  • mj2_to_frames: converte i flussi video mj2 in formato YUV.
  • wrap_j2k_in_mj2: avvolge i codestream j2k nel formato mj2.
  • extract-j2k-from_mj2: estrae i codestreams j2k dal formato mj2.

2

Risolvo il mio problema di abilitare la delega openjp2 in Imagemagick.

Assicurati di avere installato:

Ora quando lanci ./configurepuoi vedere la delega openjp2

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


1

Dalla mia installazione predefinita di Image Magick 6.8.9.9 dai repository Ubuntu 16.04 sembra che Jpeg200 ( .jp2) sia pienamente supportato.

Le conversioni possono essere fatte con:

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

Per le opzioni della riga di comando esp. per quanto riguarda le opzioni di codifica o la gestione delle immagini affiancate, consultare la documentazione online di Image Magick .

Va detto tuttavia che jp2non è elencato nell'elenco dei formati supportati:

identify -list format

Tuttavia apparentemente funziona ancora bene.


1
Grazie @Takkat, non è il caso per me. Quando provo questo ( convert in.jp2 out.jpg), ricevo il messaggio di errore che non ho il delegato jp2: convert: nessun delegato di decodifica per questo formato immagine 'JP2' @ errore / costituisce.c / ReadImage / 501. Sono al 6.8.9.9 (da convert --version: Versione: ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org ). Stranamente la tua versione non elenca jp2 come formato ma funziona ancora! I file di output jpg sono validi?
arokath,

@arokath: sì, i file sono validi - ho testato la conversione da e verso. Leggere JPG con ImageViewer o Gimp è OK, leggere JP2 con Gimp o Darktable andava bene.
Takkat,

Anche questo bug è rilevante. Potrei averlo libopenjpeg2installato da un'altra applicazione (non posso provarlo fino a dopo oggi).
Takkat,

1
Hmm, ho dato un'occhiata a quel bug report. Anche con l'installazione libopenjp2-deve la ricostruzione dalla fonte, non funziona ancora. Purtroppo sono bloccato al 100%. Grazie per le tue risposte, però!
arokath,

1
Questa non è una risposta alla domanda. Stai solo dicendo che funziona per te! E dare un link alla documentazione non è una risposta!
Azim,

1

@arokath Come te, non sono riuscito a trovare il supporto jp2 nella versione di ImageMagick che ho installato tramite apt-get (Ubuntu 16.04.1 LTS).

Prima di creare dal sorgente (seguendo i documenti ImageMagick ), ho installato prima libopenjp2-toolse poi libopenjp2-7-dev.

Nota : non sono sicuro di quale sia stato il trucco: il sommario alfabetico alla fine del configuresupporto jp2 elencato come OpenJP2, piuttosto che JP2quale non ho notato fino a quando non avevo installato libopenjp2-7-deve riconfigurato; è del tutto possibile che abbia funzionato solo con la prima libreria.

Inoltre ./configure, makee make install, ho scoperto che avevo bisogno (come suggerito nella documentazione) per "Configurazione del linker dinamico": sudo ldconfig /usr/local/lib.

Ora, l'output di /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

1
Grazie per questo. Purtroppo ho ancora problemi! Ho installato libopenjp2-toolse libopenjp2-7-devutilizzato apt-get, quindi creato dal sorgente, quindi eseguito sudo ldconfig /usr/local/lib. (In altre parole, ha seguito i documenti). ANCORA no JP2. Argh! Mi sta facendo la testa. Eseguirò di nuovo il processo per ogni evenienza.
arokath,

Ancora niente fortuna. Ho notato che durante l'esecuzione ./configurecontrolla JP2 e non lo trova: "verifica LIBOPENJP2 ... no" . Come bonus, ora non funziona per le conversioni JPEG in generale. Quando l'ho provato convert in.png out.jpgcrea un file, ma non è valido - è un file PNG solo con l'estensione jpg. Non so perché JPEG dovrebbe improvvisamente essere rotto quando ho compilato dal sorgente!
arokath,

Prova a eseguire "apt-get build-dep imagemagick" in modo da installare le librerie necessarie per imagemagick (queste saranno quelle con cui è stato creato nella versione, quindi avrai ancora bisogno di openjp2)
cbz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.