使用imagemagick更改图像的颜色

时间:2012-08-28 18:29:16

标签: ruby twitter-bootstrap imagemagick image-manipulation rmagick

我想使用rmagick / imagemagick更改图像的前景色。更具体一点:我想将blackwhite glyphicons-halflings图标(包含在twitter bootstrap中)转换为深蓝色的glyphicons-halflings图标。 (如果我可以指定十六进制或RGB颜色,那就太好了。)

我不知道这是否可能,但我点击了imagemagick文档,我发现的唯一的事情是convert --size 100x100 xc:skyblue glyphicons-halflings.png -composite foo.png,问题是这只适用于你指定一个大小并且它正在改变前景色不是背景色。除此之外是天蓝色而不是深蓝色。

所以任何想知道如何将白色或黑色字形半身像转换成蓝色字形 - 半身像的人? (rmagick / ruby​​代码片段的加分点)

3 个答案:

答案 0 :(得分:34)

快速回答

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

blue-glyphicons-halflings.png

注意:您可以使用任何命名颜色,RGB或RGBA等代替blue(请参阅http://www.imagemagick.org/script/command-line-options.php#fill)。

<强>解释

我们通过两个步骤“着色”图标:

  • 从图标中提取Alpha通道; (注意:原始图标的颜色无关紧要,我们正在提取其alpha通道)
  • 将上面的面膜涂在您选择的彩色背景上;

有关详细信息,请阅读以下文档:

PS:在实现jQuery ThemeRoller重写https://github.com/jquery/download.jqueryui.com/issues/77

时,已经研究了上述解决方案

答案 1 :(得分:5)

http://www.imagemagick.org/Usage/color_basics/#replace,您可以使用以下命令将darkbluedarkblue的所有颜色替换为convert glyphicons-halflings.png -fill darkblue +opaque darkblue glyphicons-halflings.png

convert

如果您想在ruby中执行此操作,我建议您使用Minimagick gem https://github.com/minimagic/minimagick,它只需在命令行上调用{{1}}即可。根据我的经验,并非所有功能都已从命令行移植到RMagick

答案 2 :(得分: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}")