我正在尝试从仅包含灰度半透明图像(argb)的缓冲图像中获取像素数据。我从图像中获取 WritableRaster 并使用 Raster 的 setPixels 方法设置其像素。使用这种方法,我得到 ArrayIndexOutOfBounds 异常。在做了一些研究之后,我发现 BufferedImages 每个波段每个像素存储一个整数,而不是每个像素一个整数。也就是说,每个像素的每个波段有 8 位。当我尝试访问和更改颜色类型时,这给我带来了很多麻烦。我不知所措。如果需要,我会发布任何其他详细信息。谢谢你,新浪
问问题
303 次
1 回答
0
你能分享一下代码吗?你必须注意,如果你想在图像的一部分上设置一个矩形(128x128),你必须像这样调用 set RGB 方法
//start points to draw
int blockX=128,blockY=128;
//size of the target rectangle need to be painted
int w=128,h=128;
int[] colors=new int[h*w];
//....init color array
//start painting from x value in array
int colorOffset=0;
//number of value should read from array for one row
int paintWidth=128;
//I think you get the Exception here, because of wrong number passed for drawing pixel for each row
out.setRGB(blockX,blockY, w, h, colors, colorOffset, paintWidth);
再一次,我们不是魔术师,请分享代码伙伴:) 这个例子也可以帮助你
于 2013-07-18T07:23:30.707 回答