Bash Batch调整图像文件大小问题

时间:2009-07-29 13:09:25

标签: bash cygwin imagemagick

我有一个小脚本,用于调整目录中的所有图像。我在cygwin中运行这个脚本,它使用“转换”来调整图像大小。图像改变了它们的分辨率,但是在脚本运行后我的文件大小有问题。

我通常使用此脚本来调整从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 个答案:

答案 0 :(得分:2)

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

另一个更可能的选择可能是你要调整图像的大小,这可能是用双三次大小调整来完成的。这会导致文本或绘图的边缘变得有点模糊。这意味着他们会消耗更多的颜色并且压缩更糟。

也可能是您的原始图像使用优化的调色板,可能只有几种颜色,调整大小后,由于调整大小的平滑,它们需要单个GIF帧支持的全部256种颜色。 / p>

无论如何,使用PNG而不是GIF可能会看到更好的性能。 PNG被设计为GIF的现代替代品,目前使用的(图形)浏览器在显示PNG(没有alpha通道)时出现问题。 PNG比GIF压缩得更好,同时允许更多颜色。还有像optipng这样的工具可以进一步压缩PNG图像。

答案 1 :(得分:0)

转换会自动优化调色板,但调色板可能会因调整大小时混合颜色而增长。您应该能够在图形程序中检查源图像和结果图像,并查看颜色数。

GIF仅支持LZW压缩,但由于专利限制已经过期(最后一次是2004年),曾经有必要手动启用LZW压缩。我不确定是否仍然如此,但值得研究。

  

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