Скажем, у вас есть массив из 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 );
}
}
Обратите внимание, что если вы отобразите это изображение, оно будет серым, но если вы увеличите его, вы увидите, что оно на самом деле состоит из совершенно случайных цветных пикселей. Просто генератор случайных чисел настолько хорош, что на экране все выглядит серым:)