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

Posted

技术标签:

【中文标题】使用 bash convert 将 .png 转换为 .gif 时出现巨大的空白【英文标题】:Huge whitespace appearing when converting .png to .gif with bash convert 【发布时间】:2018-03-14 01:32:54 【问题描述】:

我有一个名为“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”也会发生同样的情况......有什么想法吗?

我在 Ubuntu 16.04.3 的 bash shell 中运行它。

【问题讨论】:

【参考方案1】:

嗯……有几件事。

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

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

你不需要在文件名前加上./,因为这只是表示“当前目录”,无论如何都是默认的,所以你可以省略它。

现在到实际问题。我猜你的 PNG 文件是从一些较大的图像中裁剪出来的,并且 “记住” 它们以前的画布大小。让他们忘记的最好方法是在加载后使用+repage

所以,如果没有看到你的文件,我怀疑你想要更多类似的东西:

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

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


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

identify plots_for_gifs/*000.png

【讨论】:

非常感谢马克,+repage 成功了,从.ps 转换为.png 文件时,原始图像确实被裁剪了。 酷 :-) 请记住,问题(和答案)是免费的,所以如果您遇到困难请回来。祝你的项目好运!

以上是关于使用 bash convert 将 .png 转换为 .gif 时出现巨大的空白的主要内容,如果未能解决你的问题,请参考以下文章

PHP imagemagick exec将PDF页面0转换为PNG太小

heic格式转jpeg/png软件——HEIC Converter for Mac

将 .mbtiles 转换为 .png 图像

将 .jpg 图像转换为 .png

使用alpha将8位PNG转换为32位

使用 ImageMagick 将 gif 转换为 png 时出现“转换:不正确的图像标题”错误