【问题标题】:compress very large resolution image file using Imagemagick使用 Imagemagick 压缩超大分辨率图像文件
【发布时间】:2015-03-19 07:58:34
【问题描述】:

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

【问题讨论】:

    标签: image compression imagemagick mogrify


    【解决方案1】:

    需要检查的几件事...您的图像对应于大约 1.6GB 的原始数据,因此您可能会发现您需要运行 64 位环境,而不是 32 位环境。如果您在 Windows 上,您可能需要在 NTFS 文件系统而不是 FAT 上运行,因为 FAT 文件系统虽然可以达到 130GB 的大小,但不能支持大于 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,它被描述为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
    

    【讨论】:

    • 是的,vips 解决了我的问题,非常感谢,但我又遇到了一个小问题,我正在浏览 vips 文档,我发现它也支持 Webp,但我不知道是什么将 jpeg 转换为 webp 的正确命令。
    • webp 仅支持最大 16,000 x 16,000 的图像,所以我认为它对您没有用处。如果你想试试的话,语法是vips webpsave a.jpg x.webp。
    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多