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


13

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

我通过包管理器安装ImageMagick的:sudo apt-get install ImageMagick
我正在使用ImageMagick 6.8.9-9,这是可以提供的ImageMagick的最新版本apt-get

当前,自动包含许多主要文件类型。以下库具有内置支持,并作为委托列出:

bzlib开罗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的代表页面提供压缩包openjpeg-2.0.0.tar.gz

好的,所以我下载了它,并按照安装文件中给出的安装说明进行操作。普通的东西:cmake .sudo make install

但是现在,如何配置ImageMagick使其“拾取” open-jpeg-2.0.0?我需要从源代码重建ImageMagick吗?还是我可以输入一个命令使ImageMagick启用它?还是我应该更改的文件等?

我花了很多年的时间研究此问题,在线阅读了许多问答,但我仍然没有破解。这是我的Linux知识的问题,而不是与ImageMagick 本身有关的问题,因此,如果有人可以帮助我确定这里缺少的步骤,我将不胜感激。谢谢。


我通过使用graphicsmagick解决了这个问题,例如gm convert in.jp2 out.jpg
山姆·威尔逊

Answers:


3

安装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

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

确保已安装:

现在,当您启动时,./configure您可以看到openjp2委托

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


1

从Ubuntu 16.04存储库的默认安装Image Magick 6.8.9.9中,似乎.jp2完全支持Jpeg200()。

转换可以通过以下方式完成:

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

对于命令行选项,尤其是。有关编码选项或平铺图像的处理,请参阅Image Magick在线文档

必须指出的是,jp2它不在支持的格式列表中:

identify -list format

尽管如此,它显然仍然可以正常工作。


1
谢谢@Takkat,但对我而言并非如此。尝试使用此方法(convert in.jp2 out.jpg)时,出现错误消息,提示我没有jp2委托:convert:此图像格式'JP2'的无解码委托@ error / constitute.c / ReadImage / 501。我是6.8.9.9(来自convert --version版本:ImageMagick 6.8.9-9 Q16 x86_64 2017-03-14 imagemagick.org)。奇怪的是,您的版本未将jp2列出为格式,但仍然有效!jpg输出文件有效吗?
arokath

@arokath:是的文件是有效的-我测试了往返的转换。使用ImageViewer或Gimp读取JPG是可以的,使用Gimp或Darktable读取JP2很好。
塔卡特

这个错误也很重要。我可能是libopenjpeg2从另一个应用程序安装的(直到今天晚些时候才进行测试)。
塔卡特

1
嗯,我看了那个错误报告。即使安装libopenjp2-dev并从源代码进行重建,它仍然无法正常工作。不幸的是,我100%被困。不过,谢谢您的答复!
arokath'4

1
这不是问题的答案。您只是在说它对您有用!给出文档链接不是答案!
阿齐姆(Azim)

1

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

在从源代码进行构建之前(遵循ImageMagick docs),我首先安装了libopenjp2-tools,然后进行了安装libopenjp2-7-dev

注意:我不确定哪个是成功的:configure列出的jp2 support 末尾的字母摘要为OpenJP2,而不是JP2直到安装libopenjp2-7-dev和重新配置后我才注意到的那个;它很可能只与第一个库一起工作。

此外./configuremake还有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

1
谢谢你 不幸的是,我仍然有问题!我安装libopenjp2-toolslibopenjp2-7-dev使用apt-get,然后从源代码构建,然后运行sudo ldconfig /usr/local/lib。(换句话说,跟随文档)。仍然没有JP2。啊!我正在努力。为防万一,我将再次执行该过程。
arokath

仍然没有运气。我注意到,在运行时./configure,它会检查JP2并没有找到它:“正在检查LIBOPENJP2 ... no”。另外,现在它通常不适用于JPEG转换。当我尝试convert in.png out.jpg创建一个文件时,它是无效的-它是一个带有jpg扩展名的PNG文件。我不知道为什么从源代码编译时JPEG应该突然坏掉!
arokath

尝试运行“ apt-get build-dep imagemagick”,以便它安装imagemagick所需的库(这些库是在发行版中使用的库,因此您仍然需要openjp2)
cbz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.