Поиск градиента цвета в Java - PullRequest
1 голос
/ 12 декабря 2010

У меня есть список значений от 0-1. Я хочу преобразовать этот список в изображение с помощью градиента, который преобразует эти значения с плавающей запятой в значения RGB. Существуют ли какие-либо инструменты в Java, которые предоставляют вам эту функциональность?

Ответы [ 3 ]

0 голосов
/ 12 декабря 2010

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

0 голосов
/ 13 декабря 2010

Скажем, у вас есть массив из 64 000 троек, соответствующих значениям RGB, например:

    final Random rand = new Random();
    final float[] f = new float[320*200*3];
    for (int i = 0; i < f.length; i++) {
        f[i] = rand.nextFloat(); // <-- generates a float between [0...1.0[
    }

И, скажем, у вас есть BufferedImage размером 320x200 (64 000 пикселей) типа INT_ARGB (8 бит на значение + 8 бит для уровня альфа):

    final BufferedImage bi = new BufferedImage( 320, 200, BufferedImage.TYPE_INT_ARGB );

Затем вы можете преобразовать массив с плавающей точкой в ​​значение RGB и заполнить изображение следующим образом:

    for (int x = 0; x < 320; x++) {
        for (int y = 0; y < 200; y++) {
            final int r = (int) (f[x+y*200*3] * 255.0);
            final int g = (int) (f[x+y*200*3+1] * 255.0);
            final int b = (int) (f[x+y*200*3+2] * 255.0);
            bi.setRGB( x, y, 0xFF000000 | (r << 16) | (g << 8) | b );
        }
    }

Обратите внимание, что если вы отобразите это изображение, оно будет серым, но если вы увеличите его, вы увидите, что оно на самом деле состоит из совершенно случайных цветных пикселей. Просто генератор случайных чисел настолько хорош, что на экране все выглядит серым:)

0 голосов
/ 12 декабря 2010

0 должно быть сопоставлено 0
1 должен быть сопоставлен 255

Имейте в виду, что вам нужно 3 из них, чтобы сделать цвет

умножьте на 255 число с плавающей точкой и приведите его к целому числу.

...