我有一个图像,其中每个像素为 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