转换为png时如何更改图像中的单一颜色?

Posted

技术标签:

【中文标题】转换为png时如何更改图像中的单一颜色?【英文标题】:How to change a single colour in an image when converting to a png? 【发布时间】:2021-07-05 07:11:30 【问题描述】:

目标:将图标(单色、黑色、透明背景)从 svg 或 xcf 转换为 png 并更改图标的颜色(例如,黑色变为白色或指定的十六进制颜色)。

ImageMagick 版本: 7.0.11-6

目前的进展: 我有一个 Windows 批处理文件

对于文件夹中的每个 xcf (Gimp) 文件将 对于文件夹中的每个文件col-*.* 调整大小、重新采样,然后重新映射col-*.* 文件并保存 png

我已经取得了一些成功,但我发现

col- 文件不能都是一种颜色(我想要的颜色),否则整个新 png 也只是那个块颜色。 如果 col- 文件是具有我想要的颜色和透明背景的 png,它适用于深色,但较浅的颜色最终会在边缘周围模糊。 -remap 不适用于 svg 源文件,使用 -fill 和十六进制值会使创建的所有 png 图像变得模糊。

有没有更好的方法给这些 png 重新着色?还是有办法阻止模糊? 我刚刚开始使用 ImageMagick。非常感谢!

当前批处理文件

@echo off

set resolution=72
set width=48

setlocal enableDelayedExpansion

for %%i in (*.xcf) do (
    echo Converting [ %%i --^> %%~ni.png ] ^(%width%@%resolution%^)
    
    for %%x in (os-col-*.*) do (        
        magick %%i -resize %width% -resample %resolution% -remap %%x %%~ni-%width%-%%x.png
        echo Done %%i - %%x
    )
    
    echo Done %%i
)

黑色png,没有模糊感

应用了 -remap 的 png 中的模糊性

【问题讨论】:

为什么不直接编辑 SVG 文件来改变颜色呢?或者,在调整大小之前尝试更改颜色。 【参考方案1】:

使用 ImageMagick,如果您的输入是一种颜色,并且您想在保持透明度的同时将其更改为另一种颜色,则该命令应该完全做到这一点......

convert input.png -fill #75965b -colorize 100 result.png

创建这个输出图像....

这是 IMv6 语法。对于 IMv7,使用“magick”而不是“convert”。

【讨论】:

太棒了,谢谢! magick 与上述完美配合:D

以上是关于转换为png时如何更改图像中的单一颜色?的主要内容,如果未能解决你的问题,请参考以下文章

将PDF转换为图像时,ImageMagick会更改颜色

如何在将 eps 文件转换为 jpeg 或 png 时更改其背景颜色

如何从imageview中的png获取特定颜色的所有像素

需要帮助将 BMP 图像转换为 [R] 中的矩阵吗?

在使用canvas api在浏览器中将svg转换为png时,svg中的嵌入图像在Safari中随机空白

在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像