【发布时间】:2016-05-26 15:51:57
【问题描述】:
我需要获取一个 int 数组并将其转换为 BufferImage。我真的没有关于这个主题的任何背景,我都是从互联网上学到的,所以这就是我想要做的: 从 BufferedImage(done) 创建一个数组,将此数组转换为 IntBuffer(done) - (稍后我需要通过 IntBuffer 对图像进行一些操作),将 IntBuffer 中的更改值放入新数组中(完成),并将这个数组变成 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)
【问题讨论】:
-
检查你的语法,都错了。
-
所有过程还是我如何创建栅格?
-
为什么你认为
setPixels()会返回WritableRaster?它没有。 -
那么我究竟需要如何创建一个 WritableRaster?以及如何在后面设置 int 值?如果您能尽快向我解释一下,那就太好了。
标签: java image-processing raster