基于colorlookup表减少图像颜色,不包括透明

问题描述 投票:1回答:2

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

olympic-logo.png olympic-logo.png

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

enter image description here

使用以下代码:

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

输出:olympic-logo-remap.png

enter image description here

预期产出:olympic-logo-expected.png enter image description here

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

谢谢,更多的力量。

php imagemagick imagick imagemagick-convert remap
2个回答
2
投票

您可以在执行已经执行的操作之前将原始图像的副本放在一侧,然后从中恢复alpha,如下所示:

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

其中MPR:是一个“存储器程序寄存器”,即一个命名的RAM块。

enter image description here


2
投票

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

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

enter image description here

因此,您可以通过向其添加-background black -alpha背景来修改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

enter image description here

这现在适合你吗?如果没有,请尝试将背景全部变为白色。

© www.soinside.com 2019 - 2024. All rights reserved.