我想使用 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
;很可能它只适用于第一个库。
此外./configure
,make
和make 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 委派的问题。
确保您已经安装:
- openjp2 >= 2.1(2.2 是最后一个可用版本,请参阅https://github.com/uclouvain/openjpeg)
- pkg-config(这是我的问题)
现在启动时./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}*