当前位置: 首页 > 知识库问答 >
问题:

BufferedImage像素与color.getrgb()像素之间的差异

袁宜
2023-03-14

我试图从bufferedimage中获取像素数据,该bufferedimage将只包含灰度半透明图像(argb)。我从图像中得到一个WritableRaster,并使用光栅的setPixels方法设置它的像素。使用此方法,我得到ArrayIndexOutOfBounds异常。在做了一些研究后,我发现BufferedImages在每个频带每个像素存储一个整数,而不是每个像素存储一个整数。也就是说,对于每个像素,每个频带8位。这给我带来了很多麻烦,因为我试图访问和改变颜色的类型。我不知所措。如果需要,我会发布任何其他细节。谢谢你,新浪

共有1个答案

淳于知
2023-03-14

请分享一下代码好吗?您必须注意,如果您想在图像的一部分上设置矩形(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);

再说一次,我们不是魔术师,请分享代码的朋友:)这个例子也会对你有所帮助

 类似资料:
  • 我得到了一个字节数组,存储了一个已经解构的DICOM文件中的16位像素数据。我现在需要做的是以某种方式将像素数据转换/导出为TIFF文件格式。我使用imageio-tiff-3.3.2.jar插件来处理tiff转换/头数据。但是现在我需要将该图像数据数组打包到原始图像维度的BufferedImage中,以便将其导出到TIFF。但是BufferedImage似乎不支持16位图像。有没有办法解决这个问

  • 很长一段时间,1-2个月,我一直试图找到这个问题的答案: 我的图像硬件无法加速! 我一直在网上搜索,创造了我自己的方法,用键盘敲我的头(仍然感到疼痛),但没有成功。 虽然我讨厌Java SDK以外的库,但我尝试了LWJGL和JOGL,但由于一些愚蠢的原因,它们在我的计算机上不起作用。 我试着使用系统。setProperty(“Dsun.java2d.opengl”,“True”),我使用了Vola

  • 问题内容: 我有一个屏幕外的BufferedImage,它是用type构造的。它可以包含任何内容,我正在寻找一种方法(相当有效)用透明像素完全覆盖图像,从而生成“不可见”图像。 使用这样的东西: 没有效果。一种可能的方法可能只是覆盖BufferedImage中的每个像素,但是我不确定这是最佳解决方案。你会怎么做? [编辑] 图形文档建议不要将clearRect用于屏幕外图像,但是我已经尝试了与上面

  • 问题内容: 我有计算纯python中相邻元素之间差异的算法: 有什么办法可以用Numpy重写此功能? 问题答案: 有方法: 退货

  • 我目前正在开发一个自上而下的射击游戏,在碰撞方面有一些问题。我的世界是瓷砖做的(64x64)。瓦片和实体是矩形。玩家以例如2.74的速度移动(为了更平滑的移动,不以像素为单位)。但是当涉及到玩家(一个实体)和墙之间的碰撞时,我有一些问题。为了检查是否有碰撞,我用我的球员的当前位置和他的移动速度来计算他的下一个位置和是否有碰撞。但我会检查途中的每个像素,所以即使移动速度非常快,我也无法跳过障碍。假设