如何在设置背景颜色时将 .pngs 文件夹转换为 .jpgs?

Jam*_*mes 10 command-line inkscape imagemagick image-processing

我有一个具有透明背景的 png 文件文件夹。我想从命令行转换它们并保持图像的透明背景。

我很感激任何帮助。

由于 jpg 不支持透明度,所以我如何指定输出 jpg 的背景颜色的十六进制值?现在它默认为#ffffff? 我试过这个脚本,但它给输出 jpgs 白色背景:

mogrify -quality 100 -format jpg *.png
Run Code Online (Sandbox Code Playgroud)

更新

我在inkscape中创建了这些png文件。我应该提到,我将这些 png 转换为 jpg 的目标是摆脱圆形或角形对象上的锯齿状边缘。pngs 目前有锯齿状的边缘,我读到将它们转换为 jpgs 可能会解决这个问题。然而,通过 Christian Skjødt 的回答中概述的方法进行转换会使图像的锯齿边缘更加糟糕。有没有一种方法可以将 png 转换为 jpg 并使用抗锯齿或其他技术来消除锯齿状边缘?谢谢您的帮助。

Mar*_*erg 28

JPEG 格式不支持透明度——因此,如果您想(或必须)使用 JPEG 格式,则不可能保持透明背景。有关不同图像格式的功能的概述,请参阅维基百科

请注意,JPEG 2000确实支持透明度,但它比 JPEG 格式要少得多。这是否是可行的替代方案取决于您的用例。


Chr*_*ødt 16

你的第二个问题:

要在转换图像时指定背景颜色,您可以使用以下-fill选项:

mogrify -quality 100 -format jpg -fill "#FF0000" -opaque none *.png
Run Code Online (Sandbox Code Playgroud)

使用-background提供了类似的结果。不要忘记-opaque none.


小智 3

要平滑边缘,您可以创建比目标大小大 10 倍的 PNG,然后使用抗锯齿功能调整大小为 JPG。我已经使用 Python 和 Python Imaging Library 完成了此操作,效果良好,但我不确定如何使用其他工具来完成此操作。