Создание цветовых палитр спектра

Есть ли простой способ преобразования между цветными моделями в Java (RGB, HSV и Lab).

Предполагая цветовую модель RGB:

  • Как рассчитать цветовую палитру черного тела? Я хочу использовать его для диаграммы тепловых карт.
  • Как насчет одноволнового спектра?

Изменить: Я обнаружил, что класс ColorSpace может использоваться для конверсий между RGB/CIE и многие другие цветовые модели.

Ответ 1

Вы можете создать такую ​​палитру, используя цветовую модель HSV. Это легко, когда у вас есть код HSV для RGB на месте и поиграйте с цифрами в течение нескольких минут.

Однако, я думаю, что не стоит добавлять код в свой проект, чтобы создать небольшую палитру.

Намного легче и меньше работать, чтобы извлечь нужные вам палитры из файла и добавить их как статический массив.

Photoshop позволяет вам редактировать палитры и поставляется с очень красивой черной палитрой тела в качестве предустановки.

Вы можете просто сохранить их как .act файл. Сам файл представляет собой просто 256-битный 3-байтовый файл (порядок читается, зеленый, синий, 8 бит на канал).

Ответ 2

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;
}

Это быстрый и грязный хак (я бы подстроил "магические" номера для вашего приложения), но для моих простых целей он создает приятный яркий приятный поддон.

Ответ 3

Возможно, я не понимаю ваш вопрос, но вы действительно не можете генерировать истинный спектр черного тела с устройства вывода RGB. Ограниченная цветовая гамма была бы проблемой, если бы не больше. Если все, что вам нужно, это то, что визуально напоминает спектр черного тела, это, вероятно, намного проще.

В качестве приближения рампа из (R, G, B) (0,0,0) до (255,0,0), затем до (255,255,0), затем до (255 255 255). Это даст вам тускло-красный до оранжевого, желтый, белый переход.

Если вы хотите что-то более научное, статья Википедии о Каким цветом является Солнце? Какой цвет является черным?

Ответ 4

Вы можете создать этот цветовой спектр https://i.stack.imgur.com/ktLmt.jpg

используя следующий код:

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;
    }   
}

Ответ 5

Это хороший способ сделать квадрат цвета HSL в 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;
            }