如何在 ImageMagick 中启用 JPEG2000 (jp2)?

如何在 ImageMagick 中启用 JPEG2000 (jp2)?

我想使用 ImageMagick 将一些文件从 jp2 (JPEG-2000) 转换为 jpg。执行此操作的命令很好,但我不知道如何在 ImageMagick 中启用 jp2 委托。

我通过包管理器安装了 ImageMagick:。sudo apt-get install ImageMagick
使用的是 ImageMagick 6.8.9-9,这是可从 获得的最新版本的 ImageMagick apt-get

目前,许多主要文件类型都已自动包含。以下库具有内置支持并被列为代表:

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

编辑:我应该提到,在开始处理之前,我确实尝试过文件转换openjpeg-2。类似命令convert input.jp2 output.jpg会给我错误消息:

转换:此图像格式“JP2”没有解码委托@error/constitute.c/ReadImage/501。

因此,我需要让 jp2 工作。相关库是openjpeg-2,以及 ImageMagick 的代表页面给出 tarball openjpeg-2.0.0.tar.gz,。

好的,我下载了它并按照安装文件中给出的说明进行安装。正常的东西:cmake .sudo make install

但是现在,我该如何配置 ImageMagick 以便它“拾取” open-jpeg-2.0.0?我是否必须从源代码重建 ImageMagick 才能这样做?或者我可以输入命令来让 ImageMagick 启用它?或者我应该更改一个文件,等等?

我花了很长时间研究这个问题,在网上阅读了很多问答,但我仍然没有解决它。这是我的 Linux 知识问题,而不是 ImageMagick 的问题本身,所以如果有人能帮我找出这里缺少的步骤,我将不胜感激。谢谢。

答案1

安装libopenjp2-tools并使用opj_decompress将 jp2 转换为其他内容:

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

该软件包提供了允许在几种格式之间进行转换的命令行工具,还提供了用于编码和解码 motion-jpeg2000 视频格式的工具:

  • opj_decompress:将 j2k、jp2 和 jpt 文件解码为 pgm、ppm、pnm、pgx 和 bmp。
  • opj_compress:将 pnm、pgm、pgx、bmp 和 ppm 文件编码为 j2k 和 jp2。
  • opj_dump:转储信息包含在j2k和jp2中。
  • index_create:从 j2k 文件创建带有 JPIP 索引文件的 jp2。
  • frames_to_mj2:将YUV视频流转换为mj2格式。
  • mj2_to_frames:将mj2视频流转换为YUV格式。
  • wrap_j2k_in_mj2:将 j2k 代码流包装为 mj2 格式。
  • extract-j2k-from_mj2:从 mj2 格式提取 j2k 代码流。

答案2

@arokath 和您一样,我无法在通过 apt-get(Ubuntu 16.04.1 LTS)安装的 ImageMagick 版本中找到 jp2 支持。

在从源代码构建之前(遵循ImageMagick 文档),我先安装,libopenjp2-tools然后libopenjp2-7-dev

笔记:我不确定哪一个起了作用:末尾按字母顺序列出的摘要configure将 jp2 支持列为OpenJP2,而不是JP2直到我安装并重新配置后才注意到libopenjp2-7-dev;很可能它只适用于第一个库。

此外./configuremakemake install,我发现我需要(如文档中所建议的)“配置动态链接器”:sudo ldconfig /usr/local/lib

现在,输出/usr/local/bin/identify -list format包含:

  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

答案3

我解决了在 Imagemagick 中启用 openjp2 委派的问题。

确保您已经安装:

现在启动时./configure你可以看到openjp2代表团

代表 = mpeg jbig jng jpeg lcms lzma openjp2 png tiff zlib

答案4

这是我编写的在 Ubuntu 22 上从源代码构建的脚本。

#!/bin/bash

sudo apt-get install libopenjp2-tools libopenjp2-7-dev pkg-config
version=7.1.1-8
tar_file="ImageMagick-${version}.tar.gz"
folder="ImageMagick-${version}"

if ! [ -f $tar_file ]; then
    echo "$tar_file" not found, downloading...
    wget https://download.imagemagick.org/ImageMagick/download/releases/$tar_file
fi
if ! [ -d $folder ]; then
    echo "$folder" not found, untar-ing...
    tar xvzf $tar_file
fi

cd $folder || exit

./configure --with-openjp2 > configure.log
if grep -q "jp2" configure.log; then
  echo "JP2 enabled"
else
  echo "JP2 not enabled, see configure.log, exiting"
  exit 1
fi

sudo make > make.log
sudo make install > make_install.log
sudo ldconfig /usr/local/lib
if convert -version | grep -q jp2; then
  echo "JP2 installed correctly!"
else
  echo "JP2 not enabled, see make.log and make_install.log, exiting"
  exit 1
fi

cd ..
sudo rm -rf ImageMagick-${version}*

相关内容