Генерация спектра цветовых палитр - PullRequest
14 голосов
/ 22 октября 2008

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

Предполагается, что цветовая модель RGB:

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

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

Ответы [ 5 ]

21 голосов
/ 22 октября 2008

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

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

4 голосов
/ 22 октября 2008

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

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

Если вы хотите что-то более научное, статья в Википедии о излучении черного тела имеет несколько графиков зависимости цвета от температуры. Как только вы выясните координаты CIE, вы можете перевести их в RGB в своем любимом цветовом пространстве.

Редактировать: нашел некоторые другие онлайн ссылки: Какого цвета Солнце? Какого цвета черное тело?

3 голосов
/ 22 октября 2008

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

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

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

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

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

0 голосов
/ 24 октября 2017

Вы можете создать эту цветовую гамму 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;
    }   
}
0 голосов
/ 08 апреля 2010

Это хороший способ создать цветной квадрат 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;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...