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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于colorlookup表减少图像颜色,不包括透明相关的知识,希望对你有一定的参考价值。

我正在尝试使用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

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

谢谢,更多的力量。

答案

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

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

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

enter image description here

另一答案

您的输入图像没有恒定的背景颜色。它大多是黑色的,带有大的白色边框。你可以看到,如果你关闭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

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

以上是关于基于colorlookup表减少图像颜色,不包括透明的主要内容,如果未能解决你的问题,请参考以下文章

透明居然可以透部分背景色过来

OpenCV2.4+遍历读写像素方法总结及时间度量

如何减少图像的颜色,使其具有确切数量的颜色?

如何使用 OpenCV 减少图像中的颜色数量?

使用 Image 类在 c# 中丢失图像质量(减少颜色数量)

网页制作中,我使用滤镜,把背景颜色黑色半透明了,但它也把我黑色背景上的字体也给半透明了,求高手指...