Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将0-256之间的2D int数组转换为灰度png?_Java_File Io_Png_Javax.imageio_Grayscale - Fatal编程技术网

Java 将0-256之间的2D int数组转换为灰度png?

Java 将0-256之间的2D int数组转换为灰度png?,java,file-io,png,javax.imageio,grayscale,Java,File Io,Png,Javax.imageio,Grayscale,如何将二维整数数组转换为灰度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]); } }

如何将二维整数数组转换为灰度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);
BufferedImage theImage=新的BufferedImage(100100,BufferedImage.TYPE\u INT\u RGB);

对于(int y=0;y图像显示为蓝色,因为
setRGB
需要一个RGB值,您只需设置低字节,它可能是蓝色的,这就是它显示为蓝色的原因

尝试:

BufferedImage theImage=新的BufferedImage(100100,BufferedImage.TYPE\u INT\u RGB);

对于(int y=0;y我从未尝试过,但实际上BuffereImage即使在灰度模式下也应实例化:

new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_GRAY);

我不认为你指的是PNG,因为你没有将任何内容保存到任何格式的文件中。你似乎只是在屏幕上画图。仍然是蓝色,我现在想它实际上是灰度的。应该是灰度的。你确定要将像素设置为新值而不是旧值吗?尝试传递
BufferedImage.在构造器中键入\u BYTE\u GRAY
,然后使用你原来用于内部循环的代码?我不确定出了什么问题,但它随机开始工作。谢谢!哈哈
new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_GRAY);