java - pastel - Generación de paletas de colores de espectro
tabla de codigo de colores (5)
¿Existe alguna manera fácil de convertir entre modelos de color en Java (RGB, HSV y Lab)?
Asumiendo el modelo de color RGB:
- ¿Cómo calculo la paleta de colores del espectro del cuerpo negro? Quiero usarlo para una tabla de mapa de calor.
- ¿Qué tal el espectro de longitud de onda única?
Editar: descubrí que la clase ColorSpace se puede usar para conversiones entre RGB / CIE y muchos otros modelos de color.
Puede construir dicha paleta utilizando el modelo de color HSV. Eso es fácil una vez que tenga el código HSV a RGB en su lugar y juegue con los números durante algunos minutos.
Sin embargo, creo que no vale la pena agregar el código a su proyecto solo para generar una pequeña paleta.
Es mucho más fácil y menos trabajo extraer las paletas que necesita de un archivo y agregarlas como una matriz estática.
Photoshop le permite editar paletas y viene con una bonita paleta de cuerpo negro como un ajuste preestablecido.
Simplemente puede guardarlos como un archivo .act. El archivo en sí es simplemente un archivo de 256 colores en 3 bytes (el orden es leído, verde, azul, 8 bits por canal).
Tal vez no estoy entendiendo tu pregunta, pero realmente no puedes generar un verdadero espectro de cuerpo negro a partir de un dispositivo de salida RGB. La gama de colores limitada sería un problema, al menos. Si todo lo que desea es algo que visualmente se asemeje a un espectro de cuerpo negro, eso es probablemente mucho más fácil.
Como una aproximación, rampa de (R, G, B) (0,0,0) a (255,0,0), luego a (255,255,0), luego a (255,255,255). Eso te daría la transición de rojo apagado a naranja, a amarillo, a blanco.
Si desea algo más científico, el artículo de Wikipedia sobre la radiación del cuerpo negro tiene algunas trazas de color frente a la temperatura. Una vez que descubra las coordenadas CIE, puede traducirlas a RGB en su espacio de color favorito.
Editar: encontró algunas otras referencias en línea: ¿de qué color es el sol? ¿De qué color es un cuerpo negro?
Esta es una buena forma de hacer un cuadrado de color HSL en AS3.
/**
* Generate a BitmapData HSL color square (n x n) of hue
* At a low n dimension you get cool blocky color palettes (e.g. try n=10)
*/
function generateColorSquare(n:uint, hue:uint):BitmapData
{
var bd:BitmapData = new BitmapData(n, n, false, 0xFFFFFF);
for (var i:uint=n*n; i > 0; i--)
{
bd.setPixel(i % n, Math.floor(i / n), HSBColor.convertHSBtoRGB(hue, i / (n*n), (1/n) * (i % n) ));
}
return bd;
}
Java tiene una conversión RGB a HSB incorporada. Cada vez que necesito una paleta de colores rápida en Java solo hago esto:
public Color[] generateColors(int n)
{
Color[] cols = new Color[n];
for(int i = 0; i < n; i++)
{
cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f);
}
return cols;
}
Es un truco rápido y sucio (me gustaría ajustar los números ''mágicos'' para su aplicación), pero para mis simples usos genera un buen pallet agradable brillante.
Puede generar este espectro de colores https://i.stack.imgur.com/ktLmt.jpg
usando el siguiente código:
public void render(Screen screen) {
int green = 255;
int red = 0;
for (int i = 0; i <= 255 * 2; i++) {
int rate = i / 255;
screen.fillRect((x + (i * width)/6), y, width, height, new Color(red, green, 0));
red += 1 - rate;
green -= rate;
}
}