代码之家  ›  专栏  ›  技术社区  ›  Buggabill

bash批量调整图像文件大小问题

  •  1
  • Buggabill  · 技术社区  · 17 年前

    我有一个小脚本,用于调整目录中所有图像的大小。我在cygwin中运行这个脚本,它使用“convert”来调整图像大小。这些图像的分辨率变化很好,但在脚本运行后,文件大小有问题。

    我通常使用这个脚本来调整从PowerPoint演示文稿中转储的图像的大小,以便在我编写的一个小型Web演示应用程序中使用。当我转储GIF并运行脚本时,文件的大小将增加一倍以上(例如8kb到18kb;14kb到50kb)

    脚本的相关行如下:

    /usr/bin/convert $holdfile -thumbnail x480 temp.GIF
    mv temp.GIF $i
    

    是否有一个开关来阻止文件大小增长如此之大?我知道文件大小不是很大,但是当我有很多人连接到演示文稿或不可避免的拨号用户时,我只想让他们的体验尽可能好。

    编辑:我应该指定文件以960px x 720px的分辨率开始,并将大小调整为640px x 480px。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Joey Gumbo    17 年前

    好吧,如果转换压缩比输入文件更差,就可能发生这种情况。因为完全相同的压缩方案可能会产生不同的结果,这取决于压缩代码有多好。

    另一个更可能的选择可能是您正在调整图像的大小,这可能是通过双三次调整来完成的。这会使文本或图形的边缘变得有点模糊。这意味着它们会消耗更多的颜色,压缩效果更差。

    也可能是您的原始图像使用了优化的调色板,可能只是使用了一些颜色,在调整大小后,由于调整大小所做的平滑处理,它们需要一个单独的GIF帧支持的完整256色。

    在任何情况下,您可能都应该看到使用PNG而不是GIF的更好的性能。PNG被设计成GIF的现代替代品,现在使用的任何(图形)浏览器都无法显示PNG(没有alpha通道)。PNG压缩比GIF好得多,同时允许更多的颜色。还有一些工具,比如optipng,可以进一步压缩png图像。

        2
  •  0
  •   MyItchyChin JNK    17 年前

    “转换”会自动优化调色板,但由于在调整大小期间混合了颜色,调色板可能会增长。您应该能够在图形程序中检查源图像和结果图像,并查看颜色的数量。

    GIF仅支持LZW压缩,但由于专利限制已过期(最后一次是2004年),有必要手动启用LZW压缩。我不确定这是否仍然是事实,但它值得调查。

    如果指定了LZW压缩,但 未启用LZW压缩, 图像数据写入 未压缩的lzw格式,可以 由LZW解码器读取。这可能导致 在大于预期的gif文件中。 - imagemagick.org