15

Chcę zmienić kolory pierwszego planu obrazu za pomocą rmagick/imagemagick. Aby być bardziej szczegółowym: Chcę przekonwertować ikony black lub whiteglyphicons-halflings (które są zawarte w twitter bootstrap) na ciemnoniebieskie ikony glyphicons-halflings. (Byłoby miło, gdybym mógł określić kolor hexcolor lub RGB.)Zmiana koloru obrazu za pomocą imagemagick

Nie mam pojęcia, czy jest to możliwe, ale kliknąłem dokumentację imagemagick i jedyne co znalazłem to convert --size 100x100 xc:skyblue glyphicons-halflings.png -composite foo.png, problem polega na tym, że działa tylko wtedy, gdy określisz rozmiar i zmieni on kolor pierwszego planu, a nie kolor tła. Poza tym jest skyblue, a nie ciemnoniebieski.

Więc kto ma pomysł, jak mogę przekonwertować białych lub czarnych glifów-niziołków na niebieskie ikony glyphiconów-niziołków? (Punkty bonusowe dla fragmentów rmagick/code rubinowy)

+0

Nie obiecuj punktów bonusowych, jeśli nie możesz ich dostarczyć ...:-) –

+0

Jedyne punkty bonusowe, które * możesz * dostarczyć na SE, nazywają się "bounty" :-) –

+0

Hi @ micheal-perr, zobacz moją odpowiedź. Czy rozwiązuje twój problem? Proszę, daj mi znać. Att –

Odpowiedz

5

Od http://www.imagemagick.org/Usage/color_basics/#replace, można wymienić wszystkie kolory obrazu, które nie są darkblue z darkblue za pomocą następującego polecenia:

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

Jeśli chcesz to zrobić w ruby, polecam użycie klejnotu Minimagick https://github.com/minimagic/minimagick, który po prostu wywołuje convert w linii poleceń. Z mojego doświadczenia, nie wszystkie funkcje zostały przeniesione z linii poleceń do rmagick

33

Szybka odpowiedź:

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

blue-glyphicons-halflings.png

uwaga: zamiast blue, można użyć dowolnego nazwanych kolorów, lub RGB lub RGBA itp. (patrz http://www.imagemagick.org/script/command-line-options.php#fill).

Objaśnienie:

my „kolorowania” ikony w procesie dwuetapowym:

  • Ekstrakt kanał alfa z symbole; (uwaga: kolor oryginalnych ikon nie ma znaczenia, wyodrębniamy kanał alfa)
  • Zastosuj powyższą maskę na kolorowym tle do wyboru;

Aby uzyskać więcej informacji, przeczytaj następujące dokumenty:

PS: Powyższe rozwiązanie zostało zbadane podczas wdrażania jQuery ThemeRoller przepisać https://github.com/jquery/download.jqueryui.com/issues/77

3

Oprócz odpowiedzi sguha - oto wersja Ruby (aczkolwiek dla 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}")