我需要获取一个 int 数组并将其转换为 BufferImage。我真的对这个主题没有任何背景,我都是从互联网上学到的,所以这就是我想要做的:
从 BufferedImage(done) 创建一个数组,将该数组转换为 IntBuffer(done) - (稍后我需要通过 IntBuffer 对图像进行一些操作),将 IntBuffer 中更改的值放入新数组(done)中,并将该数组转换为 WritableRaster。
(如果我对这个过程的理解不正确,请告诉我)
这是我处理 WritableRaster 的行:
WritableRaster newRaster= newRaster.setPixels(0, 0, width, height, matrix);
Eclipse 将此标记为错误并显示“类型不匹配:无法从 void 转换为 WritableRaster”
请帮忙!我有点失落。
也很抱歉英语不好。
编辑:
矩阵:
int height=img.getHeight();
int width=img.getWidth();
int[]matrix=new int[width*height];
我尝试将值插入栅格的代码部分:
BufferedImage finalImg = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
WritableRaster newRaster= (WritableRaster)finalImg.getData();
newRaster.setPixels(0, 0, width, height, matrix);
错误信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10769
at java.awt.image.SinglePixelPackedSampleModel.setPixels(Unknown Source)
at java.awt.image.WritableRaster.setPixels(Unknown Source)