2010-12-12 14 views
1

Ich habe eine Liste von Werten von 0-1. Ich möchte diese Liste in ein Bild konvertieren, indem ich einen Farbverlauf verwende, der diese Gleitkommawerte in RGB-Werte umwandelt. Gibt es in Java Tools, die diese Funktionalität bereitstellen?Verlaufsfarbsuche in Java

Antwort

0

0 sollte 0
1 abgebildet werden sollte 255

beachten zugeordnet werden, die Sie 3 von ihnen benötigen eine Farbe

so multiplizieren mit 255 die Gleitzahl zu machen und werfen es in int.

+0

Dies ist nur für gleichermaßen Werte in RGB Photoshop konvertieren, für die Gradienten Laurence ein schönes Werkzeug vorgeschlagen, die Sie nicht brauchen, können das zu tun RGB-Konvertierung –

0

Vielleicht GradientPaint können tun, was Sie wollen. Es ist unklar, wie eine Liste von Gleitkommawerten in einen Farbverlauf umgewandelt werden soll. Normalerweise besteht ein Farbverlauf aus zwei Farben und einem Mechanismus, der zwischen diesen Farben interpoliert. GradientPaint implementiert einen linearen Gradienten.

0

Sagen Sie bitte ein Array von 64 000 Tripel aus RGB-Werten entsprechen, wie folgt aus:

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

Und sagen Sie BufferedImage haben, die eine Größe von 320x200 (64 000 Punkte) vom Typ INT_ARGB hat (8 Bit pro Wert + 8 Bits für die alpha-Ebene):

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

Dann können Sie Sie in dem RGB-Wert float-Array umwandeln und füllen das Bild dies zu tun:

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

Beachten Sie, dass dieses Bild angezeigt würde es grau erscheinen würde, aber wenn Sie in es zu vergrößern werden Sie sehen, es tatsächlich perfekt zufälligen bunten Pixeln gemacht hat. Es ist nur so, dass der Zufallszahlengenerator so gut ist, dass es alle grau auf dem Bildschirm sieht :)