【问题标题】:Reduce image colors based on colorlookup table excluding transparent根据不包括透明的颜色查找表减少图像颜色
【发布时间】:2019-02-19 21:34:31
【问题描述】:

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

奥林匹克标志.png

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

使用以下代码:

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

输出: Olympic-logo-remap.png

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

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

感谢和更多的力量。

【问题讨论】:

    标签: php imagemagick imagick imagemagick-convert remap


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢你的作品很棒。将 copyalpha 替换为 copy-opacity。快速提问。有没有办法在不失去透明度的情况下将其展平,因为当您将此图像用于 pdflib 时,您只会得到圆圈的轮廓。
    • 抱歉,我不知道 pdflib,但问题和答案 ;-) 是免费的,如果您提出一个新问题来展示您正在尝试做什么,您将获得更多曝光率比已经回答的问题的 cmets 部分。祝你好运!
    • Is there a way to flatten this without losing transparency。除了透明度之外,您的图像中没有任何东西可以展平。 PNG 不支持多层,因此您只有一个 RGBA 层。唯一的事情是用一些背景颜色将 alpha 展平,这样它就有可能被转换为 JPG(或 PNG)。我不熟悉 PDFLIB。但是通过在 Mark Setchell 的解决方案中添加代码来尝试我的解决方案,以便在 -remap 之前先使背景变为纯黑色
    【解决方案2】:

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

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

    【讨论】:

    • 虽然我的问题已经解决了。这仍然有帮助。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 2016-04-06
    • 2013-01-15
    • 1970-01-01
    • 2015-11-08
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多