用白色背景replacePNG图像中的透明度

我有一些PNG图像的透明度,我需要创build与图像层组成白色背景上的版本。 我已经用Image Magick“convert”操作尝试了各种各样的东西,但是或者什么都不发生,或者我得到一个错误。 我不想去一个中间的JPGforms,因为我不想要的文物。 当然,在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 

例:

 convert image.png -background white -alpha remove white.png 

随意用任何你想要的颜色replacewhite 。 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使我完全疯狂,因为 – 与mogrify crop相结合,resize根本不起作用。 官方和我唯一正确的方法是“删除”alpha通道。

-alpha删除-alpha off(不需要使用JPG)

见文档: http : //www.imagemagick.org/Usage/masking/#remove

看起来你的命令是正确的,所以这个问题可能是由于缺less对PNG()的支持。 你可以用convert -list configure来检查,或者试试下面的方法:

 sudo yum install libpng libpng-devel 

ImageMagick使用指南的Alpha删除部分build议使用-alpha remove选项,例如:

 convert in.png -background white -alpha remove out.png 

…使用您select的-background颜色。

指南指出:

这个操作简单而且快速,而且不需要任何额外的内存使用或可能与替代的透明度去除技术相关的其他副作用。 因此,它是消除图像透明度的首选方式。

它另外增加了注释:

请注意,虽然透明度被“移除”,但Alpha通道将保持打开状态,但现在将完全不透明。 如果您不再需要Alpha通道,则可以使用Alpha Off将其禁用。

因此,如果您不需要Alpha通道,可以通过添加-alpha off选项使输出图像的大小更小,例如:

 convert in.png -background white -alpha remove -alpha off out.png 

在“ 从图像中移除透明度”部分所述的其他常用技术中,有更多关于移除透明度的技巧。

包括在这一节中提到的一个重要的警告 – 使用-flatten作为一种技术来消除透明度:

然而,这将不会与“mogrify”或多个图像序列,基本上是因为“平坦”的运营商是真正的devise合并成一个单一的形象多个图像。

因此,如果您要一次转换多个图像,例如从PDF文件中生成缩略图, -flatten将不会执行您想要的操作(将所有图像的所有图像压平成一个图像)。 另一方面,使用-alpha remove技术仍然会产生多个图像,每个图像都被去除了透明度。

这不完全是你的问题的答案,但我find你的问题,试图找出如何删除alpha通道,所以我决定在这里添加这个答案:

如果你想使用imagemagick删除alpha通道,你可以使用这个命令:

 mogrify -alpha off ./*.png 

以下是如何用白色而不是透明的replace目录中所有文件夹中的相同图像:

mogrify -background white -flatten */*.png

Welp看起来像我决定在“image magick”上面安装“graphics magick”有一些粗糙的边缘 – 当我重新安装真正的老旧的“image magick”时,上面的命令工作的很好。

编辑 ,很长一段时间后 – 这些天我会检查,看看是否“graphicsmagick”已经解决了这个问题。

要从文件中实际删除Alpha通道,请使用alpha off选项:

 convert in.png -background white -alpha off out.png 

这会创build一个图像,将第一个透明度放在第二个顶部

 composite -gravity center ImgWithTransp.png BackgroundSameSizeOfImg.png ResultImg.png 

最初发现这个post上的提示