有没有一种简单的方法在Java中转换颜色模型(RGB、HSV和Lab)。
假设采用RGB颜色模型:
- 如何计算黑体光谱颜色调色板?我想用它来制作热力图。
- 单波长光谱怎么样?
编辑: 我发现ColorSpace类可以用于RGB / CIE和许多其他颜色模型之间的转换。
有没有一种简单的方法在Java中转换颜色模型(RGB、HSV和Lab)。
假设采用RGB颜色模型:
编辑: 我发现ColorSpace类可以用于RGB / CIE和许多其他颜色模型之间的转换。
Java内置了RGB到HSB的转换功能。每当我需要在Java中快速生成一个颜色调色板时,我只需这样做:
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;
}
这是一个快速而简单的hack(我会为您的应用程序调整“神奇”的数字),但对于我简单的使用,它生成了一个美丽、明亮、愉悦的调色板。
您可以使用以下代码生成此颜色谱 https://istack.dev59.com/ktLmt.webp
:
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;
}
}
这是在AS3中制作HSL颜色方块的好方法。
/**
* 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;
}