imagen convertir java byte bufferedimage

convertir - Java: convierte el bufferedimage a byte[] sin escribir en el disco



byte[] to image java (6)

Estoy intentando enviar varias imágenes a través de un socket usando java pero necesito una forma más rápida de convertir las imágenes a una matriz de bytes para poder enviarlas. Probé el siguiente código, pero escribí aproximadamente 10,000 imágenes en mi unidad C: /. ¿Hay alguna manera de hacer esta conversión sin escribir en el disco? ¡Gracias!

ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //ImageIO.setUseCache(false); ImageIO.write(bi.getImage(), "jpg", outputStream); byte[] imageBytes = outputStream.toByteArray();


El siguiente código es muy rápido (pocos milisegundos)

import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public byte[] toByteArray(BufferedImage image) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos); encoder.encode(image); return baos.toByteArray(); }


Esto debería funcionar:

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


Trate de usar:

ImageIO.setUseCache(false);

Antes de escribir, tal vez eso ayude.



BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes)); byte[] bytes = new byte[buf.capacity()]; buf.get(bytes, 0, bytes.length);


ByteArrayOutputStream baos; ImageIO.write(bufferedImage, "png", baos); byte[] imageBytes = baos.toByteArray();