wfb*_*ale 5 java file-io png grayscale javax.imageio
如何将2D数组转换为灰度png.现在我有这个:
BufferedImage theImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
for(int y = 0; y<100; y++){
for(int x = 0; x<100; x++){
theImage.setRGB(x, y, image[y][x]);
}
}
File outputfile = new File("saved.bmp");
ImageIO.write(theImage, "png", outputfile);
Run Code Online (Sandbox Code Playgroud)
但是图像是蓝色的.我怎样才能使它成为灰度.
image [] []包含0到256之间的整数.
图像显示为蓝色,因为setRGB需要 RGB 值,您只设置低字节,这可能是蓝色,这就是为什么它显示为全蓝色。
尝试:
BufferedImage theImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
for(int y = 0; y<100; y++){
for(int x = 0; x<100; x++){
int value = image[y][x] << 16 | image[y][x] << 8 | image[y][x];
theImage.setRGB(x, y, value);
}
}
Run Code Online (Sandbox Code Playgroud)