Php 基于颜色查找表减少图像颜色,不包括透明

Php 基于颜色查找表减少图像颜色,不包括透明,php,imagemagick,imagick,imagemagick-convert,remap,Php,Imagemagick,Imagick,Imagemagick Convert,Remap,我正在尝试使用imagemagick中的-remap减少下图中的颜色数量 奥林匹克标志.png colortable.png,由这两种颜色组成A12E64,FF0000 使用以下代码: convert olympic-logo.png +dither -remap colortable.png olympic-logo-remap.png 输出: olympic-logo-remap.png 预期产出: olympic-logo-expected.png 有没有一种方法可以忽略透明区域

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

奥林匹克标志.png

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

使用以下代码:

convert olympic-logo.png +dither -remap colortable.png olympic-logo-remap.png
输出: olympic-logo-remap.png

预期产出: olympic-logo-expected.png

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


谢谢,还有更强大的功能。

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

convert rings.png -write MPR:orig +dither -remap colortable.png MPR:orig -compose copyalpha -composite result.png
其中
MPR:
是一个“内存程序寄存器”,即一个命名的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


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

谢谢,效果很好。替换copyalpha以复制不透明度。快速提问。有没有一种方法可以在不丢失透明度的情况下将其展平,因为当您使用此图像进行pdflib时,您只能看到圆圈的轮廓。对不起,我不知道
pdflib
,但是问题和答案;-)是免费的,如果你问一个新问题,而不是在一个已经回答的问题的评论部分,你会得到更多的曝光。祝你好运
有没有一种方法可以在不丢失透明度的情况下将其展平
。除了透明度,你的图像中没有什么可以展平的。PNG不支持多层,因此您只有一个RGBA层。唯一的办法是用一些背景色将alpha展平,这样就有可能将其转换为JPG(或PNG)。我不熟悉PDFLIB。但是试一下我下面的解决方案,在Mark Setchell的解决方案中添加代码,在-remapt之前先将背景变成纯黑色,尽管我的问题已经解决了。这仍然有帮助。谢谢。