将图像转换为 Jpeg2000 不起作用

将图像转换为 Jpeg2000 不起作用

我尝试将图像转换为 Jpeg2000:

convert example2.png -quality 95 example.jp2

但输出的仍然是png:

file example.jp2
example.jp2: PNG image data, 2549 x 3507, 8-bit/color RGB, non-interlaced

我究竟做错了什么?

convert -version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2016-11-29 http://www.imagemagick.org

答案1

我究竟做错了什么?

没什么。您输入的命令是正确的。问题是*.jp2( JPEG 2000) 支持未内置在Imagemagick。当转换为不受支持的格式时,生成的目标文件将与源文件格式相同。

您可以通过查看输出的第四行来验证这一点convert -version

$ convert -version

输出:

Version: ImageMagick 6.8.9-9 Q16 x86_64 2016-11-29 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib

请注意,jp2不包括。

这是一个已报告的错误(imagemagick:缺少 JPEG-2000 支持):

该错误报告描述了该问题并指出它已在最新版本(版本 6.9.1.2-1)中得到修复,但尚未到达存储库。

另一项支持测试jp2是:

$ identify -list format | egrep -i jp2

使用以下产品PPA时,风险由您自行承担:
https://launchpad.net/~isage-dna/+archive/ubuntu/imagick

更新:

根据 SamWilson 在命令中提供的信息,我测试过的受支持的 PPA 位于:https://launchpad.net/~lyrasis/+archive/ubuntu/imagemagick-jp2

sudo add-apt-repository ppa:lyrasis/imagemagick-jp2
sudo apt-get update

答案2

尝试这个

convert example2.png -quality 0 example.jp2

答案3

截至 2021 年 2 月,这仍然是一个问题。据我所知,由于存在潜艇专利风险,Ubuntu 已禁用对 JPEG 2000 的支持。

不过,有一种解决方法不需要使用第三方 PPA 或自己编译软件。该libopenjp2-tools软件包包含一个名为 的解码工具opj_decompress,它能够将 .jp2 文件转换为各种无损格式,包括 PNG、BMP、TIF 和 RAW。它甚至可以在不借助外部工具的情况下转换整个目录的文件。

将单个文件转换为 TIF:

opj_decompress -i input.jp2 -o output.tif

将目录下的文件转换为 TIF:

opj_decompress -ImgDir my_jp2_images/ -OutFor TIF

不幸的是,由于本机目录转换不是多线程的,因此速度不是很快。多年来,我不得不处理大量 JPEG 2000 文件,并且我开始使用 GNU Parallel 通过使用所有可用的 CPU 线程来加速转换过程。

将目录中的所有 .jp2 文件转换为 .tif(需要 cd 到包含文件的目录):

ls *.jp2 |parallel -j 10 --nice 19 --bar --will-cite "opj_decompress -i {} -o {}.tif"

将值更改-j为想要使用的线程数。

这些文件非常大,因为它们不使用任何类型的压缩,所以如果您需要通过网络传输它们或打算长期存储它们,您可能需要通过应用 LZW 压缩来减小它们的大小:

ls *.tif |parallel -j 10 --nice 19 --bar --will-cite "mogrify -compress lzw {}"

根据我的经验,这可以将文件大小减少多达 50%。

相关内容