在java中仅使用灰度值数组绘制图像

时间:2016-06-29 16:10:44

标签: java rgb pixel javax.imageio

我开始学习Java中的图像处理,这是我的问题:我有一个灰度图像的值数组(我假设像素值),每个(x,y)位置一个。图像是96x96。 这些值的一个例子是:

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

我的问题是,如何通过使用这些像素值来绘制此图像?我问这个的原因是因为通常我有原始图像,我提取每个像素的红色,绿色和蓝色分量值。但在这种情况下,如果我想做这样的事情:

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

我无法创建Color类,因为我没有每个像素的红色,蓝色和绿色值的组件。

我做错了什么?也许我误解了概念,如果是这样,我道歉。 非常感谢你。

1 个答案:

答案 0 :(得分:3)

灰度意味着所有三种颜色成分--R,G和B - 都是相同的。因此,使用灰度值作为颜色分量:

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