2016-06-29 79 views
0

Ich beginne zu lernen Bildverarbeitung in Java, hier ist meine Frage: Ich habe eine Reihe von Werten (ich nehme Pixelwerte) für ein Graustufenbild, eines für jedes (x, y) Position. Das Bild ist 96 x 96. Ein Beispiel für diese Werte ist:Zeichnen Bild mit nur Graustufenwert-Array in Java

238 
236 
237 
238 
240 
240 
239 
241 
241 
243 
240 
239 
231 
212 
190 
173 
148 
122 
104 

Meine Frage ist, wie kann ich dieses Bild zeichnen, indem nur diese Pixelwerte verwendet? Der Grund, warum ich das frage, ist, weil ich normalerweise das Originalbild zur Verfügung habe, und ich extrahiere die roten, grünen und blauen Komponentenwerte für jedes Pixel. Aber in diesem Fall wollen, wenn ich so etwas wie dies zu tun:

// after for loop in which I do 
//Color newColor = new Color(red,green,blue); 
//image.setRGB(x,y,newColor.getRGB()); 

JFrame frame = new JFrame(); 
JLabel lblimage = new JLabel(new ImageIcon(image)); 
JPanel mainPanel = new JPanel(new BorderLayout()); 
mainPanel.add(lblimage); 

// add more components here 
frame.add(mainPanel); 
frame.setVisible(true); 

Ich kann keine Farbe Klasse erstellen, weil ich nicht über die Komponenten für die roten, blauen und grünen Werte jedes Pixels.

Was mache ich falsch? Vielleicht irre ich Konzepte, wenn ich mich entschuldige. Vielen Dank.

+0

Eingebettete Codebausteine ​​erfordern einen vorhergehenden Zeilenumbruch in der Abschrift, genau wie ein FYI. –

Antwort

2

Graustufen bedeutet, dass alle drei Farbkomponenten - R, G und B - gleich sind. Verwenden Sie daher die Graustufenwerte als Farbkomponenten:

Color newColor = new Color(pixelValue[x][y], pixelValue[x][y], pixelValue[x][y]); 
image.setRGB(x, y, newColor.getRGB()); 
+0

Ah, deshalb gibt es nur einen Wert für jedes Pixel, danke! Ich werde es ausprobieren –

+1

@manuelmourato Es gibt ein paar Möglichkeiten, Pixel in Graustufen zu konvertieren. [Hier sind einige von ihnen] (http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/) – 4castle