小编Kei*_*oan的帖子

尝试在 Java 中绘制 24 位图像

我有一个图像,其中每个像素为 4 字节,即红色掩码为 0xFF0000,绿色为 0xFF00,蓝色为 0xFF。我读入图像并将其作为函数传递给函数(byte imgBuff,int w,int h) 然后我有

  void fun(byte imgBuff,int w,int h)
  {
      Graphics g;
      BufferedImage img;
      DataBuffer dBuffer = new DataBufferByte(imgBuff, w * h);
      WritableRaster wr = Raster.createPackedRaster(dBuffer,w,h,24,null);
      DirectColorModel dcm = new DirectColorModel(24,0xFF0000,0xFF00,0xFF);
      img = new BufferedImage(dcm,wr,false,null);
      g = getGraphics();
      g.drawImage(img,x,y,w,h,null);
  }
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时我得到

线程“Thread-23”中的异常 java.lang.IllegalArgumentException:光栅 sun.awt.image.SunWritableRaster@1d82ed7 与 ColorModel DirectColorModel 不兼容:rmask=ff0000 gmask=ff00 bmask=ff amask=0

如何从 bytebuffer viaPackedRaster到 Buffered Image for 24bit over 4 bytes

java bufferedimage illegalargumentexception

0
推荐指数
1
解决办法
2014
查看次数