如何在java中从光栅图像中获取byte []?

时间:2012-08-21 06:48:50

标签: java image image-processing raster

如何从java中的光栅图像中获取byte[]?我试过了:

byte[] data = ((DataBufferByte)bufferedImage.getData().getDataBuffer()).getData();

但这会引发ClassCastException运行时异常:“DataBufferInt无法强制转换为DataBufferByte ”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你可以使用ByteArrayOutputStream获取一个像这样的字节数组: (注意,未经测试的代码)

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( bufferedImage, "jpg", baos ); // if your image is a jpg
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();

修改的 这个怎么样? 您需要图像的FileInputstream来读取它并将其写入ByteArrayOutputStream

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
    for (int readNum; (readNum = fis.read(buf)) != -1;) {
        bos.write(buf, 0, readNum); 
    }
} catch (IOException ex) {
    //
}
byte[] bytes = bos.toByteArray();