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