Estoy tratando de 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. Intenté con el siguiente código pero escribí unas 10.000 imágenes en mi unidad C: \. ¿Hay alguna manera de hacer esta conversión sin escribir en el disco? ¡Gracias!Java- Convertir imagen en búfer a byte [] sin escribir en el disco
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//ImageIO.setUseCache(false);
ImageIO.write(bi.getImage(), "jpg", outputStream);
byte[] imageBytes = outputStream.toByteArray();
Tenga en cuenta que un poco de tiempo extra haciendo la compresión de imágenes usando una compresión mayor (menor calidad) JPEG puede ahorrar mucho tiempo de la red. Creo que debes considerar el tamaño del byte realmente enviado, que será significativamente más grande con un 'BufferedImage' puro. Por cierto, ¿cuál es la fuente de estas imágenes? Si se trata de capturas de pantalla, por ejemplo, a menudo PNG puede proporcionar un tamaño de byte más pequeño que un JPEG de compresión predeterminado. Si se tratara de capturas de pantalla continuas, tal vez incluso una transmisión de video. –
La fuente son las capturas de pantalla continuas que básicamente estoy convirtiendo en una transmisión. Pero sí, necesito descubrir cómo comprimir las imágenes sin escribirlas en el disco. Ese es mi objetivo final – tier1