我有一个带有.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
答案 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位 - >整数。