Ma9*_*9uS 5 java graphics image
在Java SE中将原始字节数组转换为Image的正确方法是什么.数组由字节组成,其中每三个字节代表一个像素,每个字节代表相应的RGB组件.
任何人都可以建议代码示例吗?
谢谢,迈克
你可以使用Raster类来完成它.它更好,因为它不需要迭代和复制字节数组.
byte[] raw = new byte[width*height*3]; // raw bytes of our image
DataBuffer buffer = new DataBufferByte(raw, raw.length);
//The most difficult part of awt api for me to learn
SampleModel sampleModel = new ComponentSampleModel(DataBuffer.TYPE_BYTE, width, height, 3, width*3, new int[]{2,1,0});
Raster raster = Raster.createRaster(sampleModel, buffer, null);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
image.setData(raster);
Run Code Online (Sandbox Code Playgroud)
假设你知道图像的高度和宽度.
BufferedImage img=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int r=0; r<height; r++)
for(int c=0; c<width; c++)
{
int index=r*width+c;
int red=colors[index] & 0xFF;
int green=colors[index+1] & 0xFF;
int blue=colors[index+2] & 0xFF;
int rgb = (red << 16) | (green << 8) | blue;
img.setRGB(c, r, rgb);
}
Run Code Online (Sandbox Code Playgroud)
大致.这假设像素数据被编码为一组行; 并且颜色的长度是3*宽*高(应该是有效的).