Programativamente, ¿cómo funciona Hue Blending en Photoshop?
-
10-12-2019 - |
Pregunta
En Photoshop, puede configurar el modo de mezcla de una capa para ser "Hue". Si esa capa es, por ejemplo, se llena con azul, entonces parece tomar la capa a continuación y la hace todo azul donde exista un color no blanco.
Me pregunto qué es lo que realmente está haciendo. Si tengo una capa de fondo con un píxel AarrggBB y la capa en la parte superior de la que se configura en el modo de mezcla "Hue" y hay un píxel AarrggBB en esa capa, ¿cómo se combinan los dos valores para dar el resultado que vemos?
No solo cae el RRGGBB de la capa a continuación. Si hubiera hecho eso, se colorearía blanco y negro también. Tampoco permitiría a las variaciones de color.
Si un píxel de fondo es 0xff00ff00 y la capa de tono correspondiente Pixel es 0xFF0000FF, entonces supongo que el resultado final será solo 0xFF0000FFF porque el FF Blue reemplaza al verde FF. Pero, si el píxel de fondo es 0x55112233 y la capa de tono Pixel es 0xFF0000FFF, ¿cómo se produce con la sombra del azul que aparece?
La razón por la que pregunto es que me gustaría tomar varias imágenes y cambiar el tono de la imagen programáticamente en mi aplicación. En lugar de almacenar 8 versiones diferentes de la misma imagen con diferentes colores, me gustaría almacenar una imagen y colorearla según sea necesario.
Solución
Encontré un algoritmo para convertir RGB a HSV aquí: http://www.cs.rit.edu/~ncs/color/t_convert.html
Por supuesto, en la parte inferior de esa página menciona que el objeto de color Java ya tiene métodos para convertir entre RGB y HSV, por lo que acabo de usar eso.
Otros consejos
He estado investigando una manera de replicar ese modo de mezcla en JavaScript / Canvas, pero solo he llegado con el modo de filtro / mezcla "coloree". (Ejemplos a continuación)
coloree algoritmo:
- Convierte los colores de RGB a HSL;
- cambia el valor del tono a la deseada (en mi caso 172⁰ o 0.477);
- Revertir la actualización HSL a RGB
NOTA: Esto está bien en el escritorio, pero que es notablemente lento en un teléfono inteligente, encontré.
Puede ver la diferencia comparando estas tres imágenes. Original:
Colorizar:
El algoritmo de "mezcla" de Fireworks "Fireworks" (que creo que es lo mismo que Photoshop):
El filtro coloree puede ser un buen sustituto.