gpt4 book ai didi

java - 如何从 int[][] 像素数组创建图像

转载 作者:行者123 更新时间:2023-11-30 08:21:25 25 4
gpt4 key购买 nike

<分区>

我有一个图像的 int[image.height][image.width] 数组。现在我想把它变回图像文件,但我失败了。

这是我所做的:

private void intToImg(int[][] pxls,String path){
BufferedImage image = new BufferedImage(pxls[0].length, pxls.length, BufferedImage.TYPE_INT_ARGB);
WritableRaster raster = (WritableRaster)image.getData();
int[] pxlsr=new int[pxls[0].length*pxls.length];
int k=0;
for(int i=0;i<pxls.length;i++)for(int j=0;j<pxls[0].length;j++)pxlsr[k++]=pxls[i][j];
raster.setPixels(0,0,pxls[0].length-10,pxls.length-10,pxlsr);//index out of bounds error here...
File f = new File(path);
try{ImageIO.write(image, "JPG", f);}
catch (IOException x){x.printStackTrace();}
}

但是我总是遇到同样的错误 java.lang.ArrayIndexOutOfBoundsException。我做错了什么?将像素阵列转换为真实图像的正确方法是什么?

我刚刚在 4 中增加了数组长度,java.lang.ArrayIndexOutOfBoundsException 终于消失了。但我仍然无法创建真实图像。相反,无论数组的值是什么,我都会用 #000009 填充图像。

这是我在做的:

for(int i=0;i<pxls.length;i++)for(int j=0;j<pxls[0].length;j++){
pxlsr[k++]=pxls[i][j];
pxlsr[k++]=pxls[i][j];
pxlsr[k++]=pxls[i][j];
pxlsr[k++]=pxls[i][j];
}
raster.setPixels(0,0,pxls[0].length,pxls.length,pxlsr);

for(int i=0;i<pxls.length;i++)for(int j=0;j<pxls[0].length;j++){
pxlsr[k++]=111;
pxlsr[k++]=111;
pxlsr[k++]=111;
pxlsr[k++]=111;
}
raster.setPixels(0,0,pxls[0].length,pxls.length,pxlsr);

还有许多其他的东西,但结果总是一样的——图像充满了黑色!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com