将Java中的2D数组转换为图像

将Java中的2D数组转换为图像,java,image,image-processing,Java,Image,Image Processing,我需要将灰度图像的2D像素强度数据数组转换回图像。我试过这个: BufferedImage img = new BufferedImage( regen.length, regen[0].length, BufferedImage.TYPE_BYTE_GRAY); for(int x = 0; x < regen.length; x++){ for(int y = 0; y<regen[x].length; y++){ img.setRGB(x,

我需要将灰度图像的2D像素强度数据数组转换回图像。我试过这个:

BufferedImage img = new BufferedImage(
    regen.length, regen[0].length, BufferedImage.TYPE_BYTE_GRAY);  
for(int x = 0; x < regen.length; x++){
    for(int y = 0; y<regen[x].length; y++){
        img.setRGB(x, y, (int)Math.round(regen[x][y]));
    }
}
File imageFile = new File("D:\\img\\conv.bmp");
ImageIO.write(img, "bmp", imageFile);
BufferedImage img=新的BufferedImage(
regen.length,regen[0]。length,BuffereImage.TYPE_BYTE_GRAY);
对于(int x=0;x对于(int y=0;y
buffereImage.TYPE_BYTE_GRAY
是无符号且无索引的。此外

当具有非不透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如
alpha Composite
文档中所述


至少,您需要排除符号扩展,并屏蔽第三个参数的所有位(除最低八位外),以
setRGB()
。再现问题的示例数据将是决定性的。

尝试以下代码:

public void writeImage(int Name) {
    String path = "res/world/PNGLevel_" + Name + ".png";
    BufferedImage image = new BufferedImage(color.length, color[0].length, BufferedImage.TYPE_INT_RGB);
    for (int x = 0; x < 200; x++) {
        for (int y = 0; y < 200; y++) {
            image.setRGB(x, y, color[x][y]);
        }
    }

    File ImageFile = new File(path);
    try {
        ImageIO.write(image, "png", ImageFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public void writeImage(int Name){
String path=“res/world/PNGLevel_”+Name+”.png”;
BuffereImage=新的BuffereImage(color.length,color[0]。length,buffereImage.TYPE\u INT\u RGB);
对于(int x=0;x<200;x++){
对于(int y=0;y<200;y++){
setRGB(x,y,color[x][y]);
}
}
File ImageFile=新文件(路径);
试一试{
写入(图像,“png”,图像文件);
}捕获(IOE异常){
e、 printStackTrace();
}
}

A shot in dark:从double到int可能存在舍入问题?不,我想这不是问题。大多数像素都已经是整数了。它们只是在一个双数组中。另外,对于剩下的少数像素,像素值太接近int。例如:我有254.99999999999表示255,所以它必须舍入到255。我不认为alpha component可能是问题所在。因为即使我在双数组中的所有值都为255.0,我仍然会得到一个黑色像素的图像。您可以验证图像尺寸,并编辑问题以包含显示问题的。