Как я могу преобразовать BufferedImage в байтовый массив без использования файлов - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь преобразовать BufferedImage в массив байтов, но каждый раз получаю исключение. У меня есть служба, которая возвращает 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

Как я могу сделать это преобразование без использования файлов

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете использовать ByteArrayOutputStream класс и записывать данные из BufferedImage объекта, используя следующий код,

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();

И все это только в памяти без использования дискового ввода-вывода или записи в файлы.

...