在 java 中显示灰度图像
display grayscale image in java
我在 java 中创建了 floats 的二维数组,代表灰度图像,当每个像素被归一化时 - 它在 [0,1].[=11 之间=]
如何获取二维数组并显示图像(当然是灰度)?
好吧!
最简单的方法是用它制作一个 BufferedImage。为此,您必须将值转换为颜色:
int toRGB(float value) {
int part = Math.round(value * 255);
return part * 0x10101;
}
首先将 0-1 范围转换为 0-255 范围,然后生成所有三个通道(RGB - 红色、绿色和蓝色)具有相同值的颜色,这就是灰色。
然后,为了制作整幅图像,设置所有像素值:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
image.setRGB(x, y, toRGB(theFloats[y][x]));
获得图像后,您可以将其保存到文件中:
ImageIO.save(image, 'png', new File('some/path/file.png'));
或者,以某种方式显示它,也许是使用 Swing。例如参见 [=13=]。
我在 java 中创建了 floats 的二维数组,代表灰度图像,当每个像素被归一化时 - 它在 [0,1].[=11 之间=]
如何获取二维数组并显示图像(当然是灰度)?
好吧!
最简单的方法是用它制作一个 BufferedImage。为此,您必须将值转换为颜色:
int toRGB(float value) {
int part = Math.round(value * 255);
return part * 0x10101;
}
首先将 0-1 范围转换为 0-255 范围,然后生成所有三个通道(RGB - 红色、绿色和蓝色)具有相同值的颜色,这就是灰色。
然后,为了制作整幅图像,设置所有像素值:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
image.setRGB(x, y, toRGB(theFloats[y][x]));
获得图像后,您可以将其保存到文件中:
ImageIO.save(image, 'png', new File('some/path/file.png'));
或者,以某种方式显示它,也许是使用 Swing。例如参见 [=13=]。