我有一张带有alpha通道(即透明度)的PNG图像,我需要创建一个将图像层组合到白色背景上的版本。我想使用可编写命令的CLI工具(例如Image Magick)直接将PNG转换为无损PNG。
以下是一个不起作用的Image Magick命令示例,它会导致错误:
convert input.png -background white -flatten output.png
我有一张带有alpha通道(即透明度)的PNG图像,我需要创建一个将图像层组合到白色背景上的版本。我想使用可编写命令的CLI工具(例如Image Magick)直接将PNG转换为无损PNG。
以下是一个不起作用的Image Magick命令示例,它会导致错误:
convert input.png -background white -flatten output.png
-background white -alpha remove -alpha off
例子:
convert image.png -background white -alpha remove -alpha off white.png
随意将white
替换为您想要的任何其他颜色。Imagemagick文档对-alpha remove
操作有以下说明:
该操作简单快捷,能够完成任务而无需使用额外的内存或与其他透明度去除技术可能相关的其他副作用。因此,这是首选的去除图像透明度的方法。
-background white
(尽管对于其他颜色可能需要)。 - Skippy le Grand Gourouconvert image.png -background white -alpha off white.png
生成了一个带有黑色背景的图像。
convert image.png -background "#00ff33" -alpha off 00ff33.png
也生成了一个黑色背景。 - McNulty这对我有用:
convert -flatten img1.png img1-white.png
-flatten
命令行选项-layers
命令行选项(-flatten
等同于 -layers flatten
)mogrify -flatten *.png
。为了安全起见,请不要忘记备份。更多信息请参阅:https://www.imagemagick.org/script/mogrify.php - tro在ImageMagick中,将图像扁平化并应用背景图像很简单。
然而,指令的顺序非常重要。
要在透明图像上应用任何背景并将其压平,请先应用背景,然后再将其压平。反过来则行不通。
$ convert sourceimage.png -background BackgroundColor -flatten destinationimage.png
对我起作用的唯一方法是将所有答案混合在一起:
convert in.png -background white -alpha remove -flatten -alpha off out.png
... -background "#010203" ...
代替使用白色。 - Alexis Wilkemogrify -background white -flatten */*.png
。 - Julian以下是如何将目录中所有文件夹中相同的图像替换为白色而不是透明的方法:
mogrify -background white -flatten */*.png
convert imgWithTranspBkg.png -alpha remove -alpha off bkg.jpg resultImg.png
- Aquarius PowerAlpha Remove 部分的 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
libpng12-0
的 Ubuntu 13.04。如果你运行这个命令,你能看见 png 吗? convert -list configure | grep \png
- Alastairmogrify -alpha off ./*.png
看起来我选择安装“graphics magick”而不是“image magick”有些问题了 - 当我重新安装真正的老旧的“image magick”时,上面的命令就可以完美地工作了。
编辑,很久以后 - 总有一天我会检查一下“graphics magick”是否已经解决了这个问题。