使用Imagemagick压缩非常大的分辨率图像文件

时间:2015-03-19 07:58:35

标签: image compression imagemagick mogrify

我有一些分辨率为20400x28056的扫描图像。我想让他们使用imagemagick进行压缩。我试过了 convert ToBeCompressed.jpeg -quality 70 output.jpeg但是这个命令让我的笔记本电脑崩溃了。我认为它无法处理如此大的分辨率。请提出任何建议。

1 个答案:

答案 0 :(得分:5)

要检查的一些事项......您的图像对应大约1.6GB的原始数据,因此您可能会发现需要运行64位环境而不是32位环境。如果您使用的是Windows,则可能需要在NTFS文件系统而不是FAT上运行,因为FAT文件系统虽然大小可达130GB,但不能支持大于2GB的单个文件,如果运气不好,则不能支持4GB。< / p>

最后,您是否可以考虑调整图像而不是降低图像质量,如果您在阅读时动态调整动态,您可能会做得更好因为它资源密集程度较低。所以,假设您决定接受每侧长度的一半(原始区域的1/4)

convert input.jpg[50%x50%] -quality 70 output.jpg

根据您之后对图像的实际需要,可以使用ImageMagick的stream实用程序将图像分割成块。它一次读取一行图像,因此它只使用很少的内存。因此,要将图像的两半变为原始格式,您可以执行

stream  -extract 20400x14028+0+0     ToBeCompressed.jpg tophalf.rgb
stream  -extract 20400x14028+0+14028 ToBeCompressed.jpg bottomhalf.rgb

然后,如果您想将这些原始RGB文件转换为JPG,您可以

convert -depth 8 -size 20400x14028 tophalf.rgb tophalf.jpg

您可以追求的另一种途径可能是vips,其描述为here

因此,如果您的图片被称为BigBoy.jpg,您可以将其设置为60,例如:

vips jpegsave BigBoy.jpg BB60.jpg --Q=60

导致我的系统

ls -l Bi* BB60.jpg
-rw-r--r--  1 mark  staff  270283175 19 Mar 14:17 BB60.jpg
-rw-r--r--  1 mark  staff  997198223 19 Mar 14:07 BigBoy.jpg