根据 colorlookup table 减少图像颜色,不包括透明

Reduce image colors based on colorlookup table excluding transparent

我正在尝试使用 imagemagick 中的 -remap 减少下图中的颜色数量。

奥运会-logo.png

colortable.png这两个颜色组成A12E64,FF0000

使用以下代码:

convert olympic-logo.png +dither -remap colortable.png olympic-logo-remap.png

输出: 奥林匹克标志-remap.png

预期输出: 奥林匹克标志-expected.png

有没有办法忽略透明区域,这样它就不会被映射以获得预期的输出?

感谢加力量

您可以在执行您已经执行的操作之前将原始图像的副本放在一边,然后像这样从中恢复 alpha:

convert rings.png -write MPR:orig +dither -remap colortable.png MPR:orig -compose copyalpha -composite result.png

其中 MPR:"Memory Program Register",即命名的 RAM 块。

您的输入图像没有固定的背景颜色。它主要是黑色的,带有一个大的白色边框。你可以看到,如果你关闭 alpha:

convert olympic-logo.png -alpha off aoff.png

因此您可以通过添加 -background black -alpha background 来修改 Mark Setchell 的命令。

convert xc:"#A12E64" xc:"#FF0000" +append colortable.png

convert olympic-logo.png -background black -alpha background -write MPR:orig +dither -remap colortable.png MPR:orig -compose copy_opacity -composite result.png

这对你有用吗?如果不是,请尝试将背景设为全白。