Изменение цвета изображения с помощью imagemagick
Я хочу изменить цвета переднего плана изображения с помощью rmagick/imagemagick. Чтобы быть более конкретным: я хочу преобразовать черный или white glyphicons-halflings (которые включены в twitter bootstrap) в значки darkblue glyphicons-hallings. (Было бы неплохо, если бы я мог указать цвет hexcolor или RGB.)
Я понятия не имею, возможно ли это, но я щелкнул документацию imagemagick, и единственное, что я нашел, это convert --size 100x100 xc:skyblue glyphicons-halflings.png -composite foo.png
, проблема в том, что это работает только при указании размера и изменении цвета переднего плана а не цвет фона. Кроме того, это не голубой свет.
Итак, кто-нибудь, у кого есть идея, как я могу превратить белые или черные глификоны-халфлинги в синие значки глификонов-халфлингов? (Бонусные очки для фрагментов кода rmagick/ruby)
Ответы
Ответ 1
Быстрый ответ:
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).
Объяснение
Мы "раскрашиваем" значки в двухэтапном процессе:
- Извлеките альфа-канал из значков; (обратите внимание: цвет исходных значков не имеет значения, мы извлекаем его альфа-канал)
- Примените указанную маску к цветному фону по вашему выбору;
Для получения дополнительной информации прочитайте следующие документы:
PS: Вышеупомянутое решение было исследовано при реализации jQuery ThemeRoller rewrite https://github.com/jquery/download.jqueryui.com/issues/77
Ответ 2
В http://www.imagemagick.org/Usage/color_basics/#replace вы можете заменить все цвета изображения darkblue
на darkblue
с помощью следующей команды:
convert glyphicons-halflings.png -fill darkblue +opaque darkblue glyphicons-halflings.png
Если вы хотите сделать это в рубине, я бы рекомендовал использовать камень Minimagick https://github.com/minimagic/minimagick, который просто вызывает convert
в командной строке. По моему опыту, не все функции были перенесены из командной строки в RMagick
Ответ 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}")