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.


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.

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


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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.