使用ImageMagick更改图像颜色

18
我想使用rmagick/imagemagick更改图像的前景色。 更具体地说:我想将Twitter Bootstrap中包含的blackwhite glyphicons-halflings图标转换为深蓝色glyphicons-halflings图标。 (如果我可以指定十六进制颜色或RGB颜色,那就太好了。)
我不知道这是否可能,但我浏览了imagemagick文档,我发现唯一的方法是convert --size 100x100 xc:skyblue glyphicons-halflings.png -composite foo.png,问题是您只有在指定大小时才能使用此功能,并且它只更改前景色而不是背景色。 另外它是天蓝色而不是深蓝色。
所以有没有人有想法如何将白色或黑色的glyphicons-halflings转换为蓝色glyphicons-halflings图标?(对于rmagick/ruby代码片段,奖励分)

如果无法兑现,不要承诺积分奖励... :-) - Kurt Pfeifle
你在SE上唯一能够提供的奖励积分被称为“赏金” :-) - Kurt Pfeifle
嗨@micheal-perr,请看一下我的答案。它解决了你的问题吗?只要让我知道就可以了。致敬 - Rafael Xavier
3个回答

38

快速回答:

convert glyphicons-halflings.png -alpha extract -background blue \
-alpha shape blue-glyphicons-halflings.png

blue-glyphicons-halflings.png

注意:您可以使用任何命名颜色、RGB或RGBA等(请参见http://www.imagemagick.org/script/command-line-options.php#fill)。不一定要使用蓝色。

说明:

我们对图标进行“着色”处理,分为以下两步:

  • 从图标中提取阿尔法通道;(注意:原始图标的颜色不重要,我们只需要提取它的阿尔法通道)
  • 将上述掩模应用于您选择的有色背景上;

欲了解更多信息,请阅读以下文档:

PS:上述解决方案是在实现jQuery ThemeRoller rewrite时进行研究的。https://github.com/jquery/download.jqueryui.com/issues/77


5

3
除了sguha的回答之外,这里是Ruby版本的代码(尽管是针对QuickMagick的):
require 'quick_magick'
source = "images/source.png"
dest = "images/saved.png"
foreground = "0000ff" #hex code for your colour

QuickMagick.exec3("convert #{source} -fill \"##{foreground}\" +opaque \"##{foreground}\" #{dest}")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接