我有一些分辨率为20400x28056的扫描图像。我想要他们被压缩使用图像。我尝试了convert ToBeCompressed.jpeg -quality 70 output.jpeg
,但是这个命令使我的笔记本电脑崩溃了。我认为它不能处理这么大的决议。请给我任何建议。
发布于 2015-03-19 01:33:21
一些事情要检查..。您的映像对应于1.6GB左右的原始数据,因此您可能会发现您需要运行64位环境,而不是32位。如果您在Windows上,您可能需要在NTFS文件系统上运行,而不是FAT文件系统,因为FAT文件系统虽然大小可以达到130 4GB,但不能支持大于2GB的单个文件,如果幸运的话,可以支持4GB。
最后,你能不能考虑调整图像的大小而不是降低它的质量,如果你在读它的时候马上调整它的大小,你可能会做得更好,因为它不那么耗费资源。所以,假设你决定接受一张两边一半长的图像(原面积的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
,它被描述为这里。
因此,如果您的图像名为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
https://stackoverflow.com/questions/29139520
复制