Como ativar o JPEG2000 (jp2) no ImageMagick?

13

Quero usar o ImageMagick para converter alguns arquivos de jp2 (JPEG-2000) para jpg. O comando para fazer isso é bom, mas não sei como habilitar o delegado jp2 no ImageMagick.

Eu instalei ImageMagick via gerenciador de pacotes: sudo apt-get install ImageMagick.
Estou usando o ImageMagick 6.8.9-9, esta é a versão mais atualizada do ImageMagick disponível em apt-get.

Atualmente, muitos dos principais tipos de arquivos são incluídos automaticamente. As seguintes bibliotecas têm suporte interno e estão listadas como delegadas:

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

Edit : Eu deveria ter mencionado, eu tentei conversões de arquivos antes de começar a discutir openjpeg-2. Um comando como convert input.jp2 output.jpgme dá a mensagem de erro:

converter: nenhum delegado de decodificação para este formato de imagem `JP2 '@ erro / constitui.c / ReadImage / 501.

Então, preciso que o jp2 funcione. A biblioteca relevante é openjpeg-2, e a página de delegados do ImageMagick fornece o tarball openjpeg-2.0.0.tar.gz,.

Ok, baixei e segui as instruções de instalação fornecidas no arquivo de instalação. Coisas normais: cmake ., sudo make install.

Mas agora, como faço para configurar o ImageMagick para que ele seja "captado" open-jpeg-2.0.0? Preciso reconstruir o ImageMagick a partir da fonte para fazer isso? Ou existe um comando que eu possa inserir para que o ImageMagick o habilite? Ou um arquivo que devo mudar, etc?

Passei séculos e anos estudando isso, li muitas perguntas e respostas on-line, mas ainda não o decifrei. É uma questão do meu conhecimento do Linux, e não algo relacionado ao ImageMagick, por isso eu realmente aprecio isso se alguém puder me ajudar a descobrir qual é o passo que falta aqui. Obrigado.

Arokath
fonte
Eu resolvi esse problema usando GraphicsMagick em vez disso, por exemplogm convert in.jp2 out.jpg
Sam Wilson

Respostas:

3

Instale libopenjp2-toolse use opj_decompresspara converter jp2 para outra coisa:

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

Este pacote fornece ferramentas de linha de comando que permitem conversões entre vários formatos e também ferramentas para codificar e decodificar os formatos de vídeo motion-jpeg2000:

  • opj_decompress: decodifica arquivos j2k, jp2 e jpt para pgm, ppm, pnm, pgx e bmp.
  • opj_compress: codifica os arquivos pnm, pgm, pgx, bmp e ppm para j2k e jp2.
  • opj_dump: informações de despejo contidas em j2k e jp2.
  • index_create: crie jp2 com o arquivo de índice JPIP a partir de um arquivo j2k.
  • frames_to_mj2: converte fluxos de vídeo YUV para o formato mj2.
  • mj2_to_frames: converte fluxos de vídeo mj2 para o formato YUV.
  • wrap_j2k_in_mj2: agrupa o j2k codestreams no formato mj2.
  • extract-j2k-from_mj2: extrai o j2k codestreams do formato mj2.
Bora M. Alper
fonte
2

Resolvo meu problema de habilitar a delegação openjp2 no Imagemagick.

Certifique-se de instalar:

Agora, quando você inicia, ./configurevocê pode ver a delegação openjp2

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

Arnaud
fonte
1

Na minha instalação padrão do Image Magick 6.8.9.9 a partir dos repositórios Ubuntu 16.04, parece que o Jpeg200 ( .jp2) é totalmente suportado.

As conversões podem ser feitas com:

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

Para opções de linha de comando esp. sobre opções de codificação ou manuseio de imagens lado a lado, consulte a documentação on-line do Image Magick .

No entanto, jp2é necessário dizer que não está listado na lista de formatos suportados:

identify -list format

No entanto, aparentemente ainda funciona bem.

Takkat
fonte
1
Obrigado @Takkat, esse não é o meu caso. Quando tento isso ( convert in.jp2 out.jpg), recebo a mensagem de erro de que não tenho o delegado jp2: convert: no decode delegate para este formato de imagem 'JP2' @ erro / constit.c / ReadImage / 501. Estou no 6.8.9.9 (de convert --version: Versão: ImageMagick 6.8.9-9 Q16 x86_64 14/03/2017 imagemagick.org ). Realmente estranho que sua versão não lista o jp2 como um formato, mas ainda funcione! Os arquivos de saída jpg são válidos?
Arokath
PS: há um erro de digitação no seu link: php não ph2 :)
arokath
@ arokath: sim, os arquivos são válidos - testei a conversão de e para. Ler o JPG com o ImageViewer ou o Gimp é bom, ler o JP2 com o Gimp ou o Darktable foi bom.
Takkat
1
Hmm, olhei para o relatório de erro. Mesmo com a instalação libopenjp2-deve a reconstrução do código-fonte, ele ainda não está funcionando. Infelizmente, ainda estou 100% preso. Obrigado por suas respostas!
Arokath #
1
Esta não é uma resposta para a pergunta. Você está apenas dizendo que funciona para você! E dar um link para a documentação não é uma resposta!
Azim
1

@arokath Como você, não consegui encontrar o suporte jp2 na versão do ImageMagick que instalei através do apt-get (Ubuntu 16.04.1 LTS).

Antes de criar a partir da fonte (seguindo os documentos do ImageMagick ), instalei primeiro libopenjp2-toolse depois libopenjp2-7-dev.

Nota : Não tenho certeza de qual deles fez o truque: o resumo alfabético no final do configuresuporte jp2 listado como OpenJP2, em vez do JP2qual eu não percebi até ter instalado libopenjp2-7-deve reconfigurado; é bem possível que funcionou apenas com a primeira lib.

Além ./configure, makee make install, descobri que eu precisava (como sugerido na documentação) para "configure o vinculador dinâmico": sudo ldconfig /usr/local/lib.

Agora, a saída de /usr/local/bin/identify -list formatcontém:

  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
fonte
1
Obrigado por isso. Ainda estou tendo problemas, infelizmente! Eu instalei libopenjp2-toolse libopenjp2-7-devusei apt-get, construí a partir da fonte e executei sudo ldconfig /usr/local/lib. (Em outras palavras, seguiu os documentos). AINDA não JP2. Argh! Está fazendo minha cabeça. Vou executar o processo novamente, apenas por precaução.
Arokath #
Ainda sem sorte. Notei que, ao executar ./configure, ele verifica o JP2 e não o encontra: "verificando o LIBOPENJP2 ... não" . Como bônus, agora não está funcionando para conversões JPEG em geral. Quando tentei, convert in.png out.jpgele cria um arquivo, mas é inválido - é um arquivo PNG apenas com a extensão jpg. Não sei por que o JPEG deve ser quebrado repentinamente quando compilei da fonte!
Arokath #
Tente executar "apt-get build-dep imagemagick" para que ele instala as bibliotecas necessárias pelo imagemagick (estes serão os únicos que foi construído com no lançamento, assim você ainda precisará openjp2)
cbz