我有一个带有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
当前回答
ImageMagick使用指南的Alpha Remove部分建议使用-alpha Remove选项,例如:
convert in.png -background white -alpha remove out.png
...使用您选择的-背景色。
指南指出:
这个操作简单快速,并且不需要任何额外的内存使用,也不需要其他可能与其他透明去除技术相关的副作用。因此,它是去除图像透明度的首选方法。
它还添加了注释:
注意,当透明度被“移除”时,alpha通道将继续打开,但现在将完全不透明。如果你不再需要alpha通道,你可以使用alpha Off禁用它。
因此,如果你不需要alpha通道,你可以通过添加-alpha off选项来减小输出图像的大小,例如:
convert in.png -background white -alpha remove -alpha off out.png
在从图像中删除透明度一节中描述了更多关于其他常用的删除透明度技术的详细信息。
在这一节中提到了一个重要的警告,即使用-flatten作为消除透明度的技术:
然而,这将不适用于“mogrify”或多个图像序列,基本上是因为“-flatten”操作符实际上是设计用于将多个图像合并为单个图像。
所以,如果你要一次转换几张图片,例如从PDF文件生成缩略图,-flatten将不会达到你想要的效果(它会将所有页面的所有图片都压扁为一张图片)。另一方面,使用-alpha移除技术仍然会生成多个图像,每个图像的透明度都被移除。
其他回答
ImageMagick使用指南的Alpha Remove部分建议使用-alpha Remove选项,例如:
convert in.png -background white -alpha remove out.png
...使用您选择的-背景色。
指南指出:
这个操作简单快速,并且不需要任何额外的内存使用,也不需要其他可能与其他透明去除技术相关的副作用。因此,它是去除图像透明度的首选方法。
它还添加了注释:
注意,当透明度被“移除”时,alpha通道将继续打开,但现在将完全不透明。如果你不再需要alpha通道,你可以使用alpha Off禁用它。
因此,如果你不需要alpha通道,你可以通过添加-alpha off选项来减小输出图像的大小,例如:
convert in.png -background white -alpha remove -alpha off out.png
在从图像中删除透明度一节中描述了更多关于其他常用的删除透明度技术的详细信息。
在这一节中提到了一个重要的警告,即使用-flatten作为消除透明度的技术:
然而,这将不适用于“mogrify”或多个图像序列,基本上是因为“-flatten”操作符实际上是设计用于将多个图像合并为单个图像。
所以,如果你要一次转换几张图片,例如从PDF文件生成缩略图,-flatten将不会达到你想要的效果(它会将所有页面的所有图片都压扁为一张图片)。另一方面,使用-alpha移除技术仍然会生成多个图像,每个图像的透明度都被移除。
下面是如何将一个目录中所有文件夹中的相同图像替换为白色而不是透明的:
Mogrify -background white -flatten */*.png
-background white -alpha remove -alpha off
例子:
convert image.png -background white -alpha remove -alpha off white.png
你可以随意用其他颜色替换白色。Imagemagick文档是这样描述-alpha remove操作的:
这个操作简单快捷,不需要就能完成工作 任何额外的内存使用,或其他可能相关的副作用 与替代透明去除技术。这就是 删除图像透明度的首选方式。
使用-flatten让我完全抓狂,因为-flatten与mogrify crop和resizing结合在一起根本不起作用。官方和对我来说唯一正确的方法是“删除”alpha通道。
-alpha remove -alpha off (JPG不需要)
参见文档:http://www.imagemagick.org/Usage/masking/#remove
唯一对我有效的答案是所有答案的混合:
convert in.png -background white -alpha remove -flatten -alpha off out.png