17

我想使用 rmagick/imagemagick 更改图像的前景色。更具体地说:我想将黑色白色 glyphicons-halflings图标(包含在 twitter bootstrap 中)转换为深蓝色 glyphicons-halflings 图标。(如果我能指定一个 hexcolor 或 RGB 颜色就好了。)

我不知道这是否可能,但我点击了 imagemagick 文档,我唯一发现的是convert --size 100x100 xc:skyblue glyphicons-halflings.png -composite foo.png,问题是这仅在您指定大小并且它正在更改前景色而不是背景色时才有效。此外,它是天蓝色而不是深蓝色。

那么有谁知道如何将白色或黑色字形半身人转换为蓝色字形半身人图标?(rmagick/ruby 代码片段的奖励积分)

4

3 回答 3

37

快速回答

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

blue-glyphicons-halflings.png

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

说明

我们分两步为图标“着色”:

  • 从图标中提取 alpha 通道;(注意:原始图标的颜色无关紧要,我们正在提取它的 alpha 通道)
  • 将上述遮罩应用在您选择的彩色背景上;

有关更多信息,请阅读以下文档:

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

于 2013-01-14T14:28:34.703 回答
5

http://www.imagemagick.org/Usage/color_basics/#replace ,您可以使用以下命令替换图像中所有不darkblue带的颜色:darkblue

convert glyphicons-halflings.png -fill darkblue +opaque darkblue glyphicons-halflings.png

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

于 2012-10-17T21:51:19.477 回答
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}")
于 2013-11-13T15:40:55.300 回答