Java 如何在不使用文件的情况下将BuffereImage转换为字节数组

Java 如何在不使用文件的情况下将BuffereImage转换为字节数组,java,nio,Java,Nio,我正在尝试将BuffereImage转换为字节数组,但每次出现异常时,我都会得到一个返回bufferImage的服务,这是我的代码: BufferedImage bufferedImage = myservice.getImage(); WritableRaster raster = bufferedImage.getRaster(); DataBufferByte data = (DataBufferByte) raster.getDataBuffer(); byte[] fileCon

我正在尝试将BuffereImage转换为字节数组,但每次出现异常时,我都会得到一个返回bufferImage的服务,这是我的代码:

BufferedImage bufferedImage = myservice.getImage();
WritableRaster raster = bufferedImage.getRaster();
DataBufferByte data   = (DataBufferByte) raster.getDataBuffer();
 byte[] fileContent = data.getData();
此代码引发了一个异常:

java.lang.ClassCastException: java.awt.image.DataBufferInt cannot be cast to java.awt.image.DataBufferByte

如何在不使用文件的情况下执行此转换

您可以使用
ByteArrayOutputStream
类,并使用以下代码从
BuffereImage
对象写入数据

BufferedImage image = null; // you have the data in this object
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "fileformat like png or jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray(); // you have the data in byte array
baos.close();
所有这些都只存储在内存中,无需使用任何磁盘io或写入文件