2010-12-12 96 views
1

我有一個從0-1的值列表。我想通過使用將這些浮點值轉換爲RGB值的漸變將此列表轉換爲圖像。 Java中有沒有提供這種功能的工具?Java中的漸變顏色查找

回答

0

0應該映射0
1應該映射255

記住,你需要他們的3做一個顏色

所以乘以255浮點數,並投它爲int。

+0

這只是轉換爲RGB Photoshop相似的值,對於梯度勞倫斯建議一個很好的工具,你可能不需要做的RGB轉換 – 2010-12-12 20:55:58

0

也許GradientPaint可以做你想做的。目前還不清楚如何將浮點值列表轉換爲漸變。通常情況下,漸變由兩種顏色和一些在這些顏色之間插值的機制組成。 GradientPaint實現線性漸變。

0

假設有由對應於RGB值64個000三元組的陣列,這樣的:

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

說你有一個具有一個大小的類型INT_ARGB的320×200(64萬個像素)(一個BufferedImage每值+ 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); 
     } 
    } 

請注意,你會顯示這個圖像,它會顯示爲灰色,但如果你放大它,你會看到它實際上是由完全隨機的彩色像素。這只是隨機數發生器是如此的好,它在屏幕上都看起來灰色:)