将所有不透明像素转换为白色,保持透明度

Convert all opaque pixels to white, keeping transparency

我有一堆 png 绘图,在透明背景上颜色和 alpha 略有不同。

我想将非完全透明像素转换为白色,同时保持局部 alpha。在 Photoshop 中,我可以通过单击“锁定透明像素”图标,然后用白色填充整个图像来做到这一点。

我想自动执行此过程并考虑在 Ubuntu 中使用 ImageMagick(运行 在我的 Windows 10 的 WSL 上;convert -version 是 6.9.10。 )

到目前为止,我已经用谷歌搜索了一段时间,但运气不佳。找到 ,但它对我不起作用,它因以下错误而退出并生成全白图像:

convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `out.png' @ warning/png.c/MagickPNGWarningHandler/1667.

我在其他地方发现 -strip 标志可以抑制此警告,但输出仍然是全白图像。

有趣的是,如果我指定非白色,结果几乎就是我需要的,当然颜色不会是白色。 (例如 convert original.png -fill yellow -colorize 100 out.png

也许这就是您在 ImageMagick 6 中想要的。使用 -fill 和 +opaque。

透明图片:

convert logot.png -fill white +opaque none logot_white.png

您必须下载每张图片才能看到透明的图片,因为本论坛使用白色背景。

如果在 Imagemagick 7 上,将“转换”更改为“magick”

这是真实的 PEBKAC 情况。我只需要 -strip 标志,因为我认为是 all-white 的图像实际上已正确涂成白色并保留了原始透明度数据,只有图像缩略图在我的计算机上生成不正确。