Я пытаюсь преобразовать BufferedImage в байтовый массив. У меня есть два условия. 1. Я не должен терять качество изображения. 2. Размер байтового массива должен соответствовать реальному изображению. Я попробовал пару вариантов.
Вариант 1:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
baos.flush();
byte[] imageBytes = baos.toByteArray();
baos.close();
Вариант 2:
WritableRaster raster = image.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
byte[] imageBytes = data.getData();
Оба эти параметра увеличивают размер изображения (более чем в два раза для больших изображений).
Ценю любую помощь. Спасибо!