将 PNG 图像中的透明度替换为白色背景
-
22-09-2019 - |
题
我有一些具有透明度的 PNG 图像,我需要创建将图像层合成到白色背景上的版本。我已经尝试过使用 Image Magick“转换”操作进行各种操作,但要么根本没有发生任何事情,要么出现错误。我不想使用中间 JPG 形式,因为我不想要这些工件。当然,在 Gimp 或 Photoshop 等中很容易做到这一点,但我真的更愿意从命令行编写脚本,因为有很多这样的东西。
不起作用的 Image Magick 命令的示例是:
convert img1.png -background white -flatten img1-white.png
这会导致错误。
谢谢!
解决方案
这对我有用:
convert -flatten img1.png img1-white.png
文档参考:
-flatten
命令行选项-layers
命令行选项 (-flatten
相当于-layers flatten
)
其他提示
-background white -alpha remove -alpha off
示例:强>
convert image.png -background white -alpha remove -alpha off white.png
随时与你想要的任何其它颜色来代替white
。 ImageMagick的文件说此有关 -alpha remove
操作:
此操作简单和快速的,并执行作业,而无需 任何额外的内存使用,或可被相关联的其他的副作用 具有替代透明度去除技术。的因此本 去除图像的透明度的优选方式。强>
压扁图像和应用背景图像是直线前进的ImageMagick中
然而,这些命令的顺序是非常重要
要应用任何背景的透明图像上并且展平,第一施加超过其压平的背景。反向不起作用。
$ convert sourceimage.png -background BackgroundColor -flatten destinationimage.png
在唯一一个为我工作是所有的答案的组合:
convert in.png -background white -alpha remove -flatten -alpha off out.png
使用-flatten让我完全疯了,因为-flatten与mogrify作物和调整组合根本不起作用。官方和用于我仅正确的方法是“删除”的alpha通道。
-alpha除去-alpha关闭(不需要具有JPG)
这里是如何用白色的,而不是透明取代在同一图像中的所有文件夹在一个目录中:
mogrify -background white -flatten */*.png
这 阿尔法删除 的部分 ImageMagick 使用指南 建议使用 -alpha remove
选项,例如:
convert in.png -background white -alpha remove out.png
...使用 -background
您选择的颜色。
该指南指出:
此操作简单且快速,并且无需使用任何额外的内存或可能与替代透明度去除技术相关的其他副作用即可完成工作。因此,这是消除图像透明度的首选方法。
它还添加了注释:
请注意,虽然透明度被“删除”,但 Alpha 通道将保持打开状态,但现在将是完全不透明的。如果您不再需要 Alpha 通道,则可以使用 Alpha Off 来禁用它。
因此,如果您不需要 alpha 通道,您可以通过添加 -alpha off
选项,例如:
convert in.png -background white -alpha remove -alpha off out.png
有关其他常用的消除透明度的技术的更多详细信息,请参阅 删除图像的透明度 部分。
该部分提到了使用的一个重要警告 -flatten
作为消除透明度的技术:
然而,这不适用于“mogrify”或多个图像序列,基本上是因为“-flatten”运算符实际上旨在将多个图像合并为单个图像。
因此,如果您要一次转换多个图像,例如从 PDF 文件生成缩略图, -flatten
不会执行您想要的操作(它将所有页面的所有图像合并为一张图像)。另一方面,使用 -alpha remove
技术仍然会产生多个图像,每个图像都删除了透明度。
看来,你的命令是正确的,所以这个问题可能是由于缺少对PNG支持()。你可以用convert -list configure
检查或只是尝试以下操作:
sudo yum install libpng libpng-devel
这是不完全回答你的问题,但是我发现你的问题,而试图找出如何删除alpha通道,所以我决定在这里添加这样的回答:
如果你想使用ImageMagick除去alpha通道,则可以使用下面的命令:
mogrify -alpha off ./*.png
韦尔普它看起来像我决定安装“图形magick”而不是“难懂的”有一些粗糙的边缘 - 当我重新安装正版这些混沌老“难懂的”,那么上面的命令工作得很好。
修改的,很长一段时间后 - 总有一天我会检查,看看是否“图形magick”已经修复了这个问题。
我需要任一:既-alpha background
和-flatten
,或-fill
我提出了一个新的PNG具有透明背景和在中间的红点。
convert image.png -background green -alpha off green.png
失败:它产生与黑色背景
<强> convert image.png -background green -alpha background -flatten green.png
产生的图像与正确的绿色背景强>
当然,与其他文件我改名image.png
,它没有做任何事情。该文件,我发现,透明像素的颜色是“#d5d5d5”,所以我填充该颜色与绿色:
<强> convert image.png -fill green -opaque "#d5d5d5" green.png
取代了透明像素与正确的绿色。强>
这产生只是放置第一与透明度的第二顶部的图像
composite -gravity center ImgWithTransp.png BackgroundSameSizeOfImg.png ResultImg.png
最初发现的尖端上此篇
要实际从文件中删除alpha通道,使用阿尔法关闭选项:
convert in.png -background white -alpha off out.png
我看到了这个问题,答案这真的帮助我,但当时我需要做对了很多文件,所以,如果你有一个文件夹中的多张图像(PNG图像),你想这样做的所有:
find ./ -name "*.png" -exec convert {} -flatten {} \;
这是-α脱落,不-α删除!当在任何图标!!
的α信道iOS应用商店载失败下面是如何做到这一点: mogrify -alpha关闭* .PNG