BufferedImage到字节数组大小

时间:2014-03-31 12:25:43

标签: java image bytearray

我有一个带有.png或.svg的BufferedImage。让我们说它是128 * 128(image.GetHeight() image.GetWidth())并将其转换为字节数组,如下所示:

byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();

我的字节数组包含2048字节(pixel.length)??

我认为它的尺寸必须是128 * 128 = 16384(所有像素)

我试图了解SVG和PNG如何存储到字节数组。我尝试过1像素图片(黑色像素) - 完美的字节数组大小是1

1 个答案:

答案 0 :(得分:0)

如果需要字节数组表示

,请尝试使用ByteArrayOutputStream
BufferedImage bi = ImageIO.read(new File("C:\\path\\to\\image.png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bi, "png", baos);
baos.flush();
byte[] byteImage = baos.toByteArray();
baos.close();

另外值得注意的是,每个像素都不是由byte表示,颜色存储为integer。你有一个alpha通道,然后有三个RGB通道。这意味着4 * Byte,这导致4 * 8位 - > 32位 - >整数。