使用 bash 将 .png 转换为 .gif 时出现巨大的空白

Huge whitespace appearing when converting .png to .gif with bash convert

我有一个名为 "plots_for_gifs" 的目录,其中包含 105 个文件,除了以 ...000.png、...001.png ... 结尾外,它们的名称完全相同。等直到...104.png。我正在尝试使用以下方法将它们转换为 .gif:

convert -density 150 -trim -delay 35 -loop 0 ./plots_for_gifs/*.png ./river_diff.gif

图像文件是 491x411 像素,但是生成的 gif 是 7017x4958 像素!即使我包括“-trim”,即使我添加“-size 491x411”也会发生同样的事情......有什么想法吗?

我是 运行 这个 bash shell Ubuntu 16.04.3.

嗯嗯....有几件事。

对于 PNG 文件,您根本不需要 -density,因为它仅设置栅格化矢量文件(例如 SVG)时要使用的密度。所以,你可以省略它。

如果像您所说的那样,您的图片尺寸已经正确,则不需要 -trim。所以,你也可以省略它。

您不需要在文件名前加上 ./ 前缀,因为这仅表示 "the current directory" 无论如何这是默认设置,因此您可以省略它.

现在进入实际问题。我猜你的 PNG 文件是从一些较大的图像中裁剪出来的,并且具有 "remembered" 之前的 canvas 大小。让他们忘记的最好方法是在加载它们后使用 +repage

因此,在没有看到您的文件的情况下,我怀疑您想要更像这样的东西:

convert -delay 35 -loop 0 plots_for_gifs/*.png +repage river_diff.gif

如果您发现确实需要-trim,请将其添加到上述命令之前 +repage.


如果这不起作用,请 运行 以下命令并将输出粘贴到您的原始问题中 - 单击其下方的 edit

identify plots_for_gifs/*000.png