15

Quiero cambiar los colores de primer plano de una imagen usando rmagick/imagemagick. Para ser más específico: Quiero convertir los iconos black o whiteglyphicons-halflings (que están incluidos en Twitter bootstrap) en íconos de glyphicons-halflings de color azul oscuro. (Sería bueno si pudiera especificar un color hexagonal o RGB.)Cambiar el color de una imagen con imagemagick

No tengo idea si esto es posible, pero hice clic en la documentación de imagemagick y lo único que encontré es convert --size 100x100 xc:skyblue glyphicons-halflings.png -composite foo.png, el problema es que esto solo funciona cuando especifica un tamaño y está cambiando el color de primer plano, no el de fondo. Además, es celeste, no azul oscuro.

Entonces, ¿alguien que tenga una idea de cómo podría convertir los glyphicons blanco o negro-halflings en iconos de glyphicons-halflings azules? (Los puntos de fidelidad para fragmentos RMagick/código Ruby)

+0

No prometer puntos de bonificación si no puede entregarlos ...:-) –

+0

Los únicos puntos de bonificación que * puede * entregar en SE se llaman 'bounty' :-) –

+0

Hola @ micheal-perr, por favor vea mi respuesta. ¿Soluciona tu problema? Por favor, házmelo saber. Att –

Respuesta

5

De http://www.imagemagick.org/Usage/color_basics/#replace, puede reemplazar todos los colores de la imagen que no son darkblue con darkblue con el siguiente comando:

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

Si quieren hacerlo en ruby, recomendaría usar la gema Minimagick https://github.com/minimagic/minimagick que simplemente llama a convert en la línea de comando. Desde mi experiencia, no toda la funcionalidad ha sido portado desde la línea de comandos para RMagick

33

respuesta rápida:

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

blue-glyphicons-halflings.png

Nota: En lugar de blue, se puede usar cualquier nombre de los colores, o RGB, o RGBA, etc. (ver http://www.imagemagick.org/script/command-line-options.php#fill).

Explicación:

Nosotros "colorear" los iconos en un proceso de dos pasos:

  • Extraer el canal alfa de los iconos; (nota: el color de los iconos originales no importa, estamos extrayendo su canal alfa)
  • Aplica la máscara anterior sobre un fondo de color de tu elección;

Para obtener más información, lea los siguientes documentos:

PS: La solución anterior ha sido investigado mientras que la aplicación de jQuery ThemeRoller reescribir https://github.com/jquery/download.jqueryui.com/issues/77

3

Además de la respuesta de sguha, aquí está la versión de Ruby (aunque para 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}") 
Cuestiones relacionadas