convertir convert archivo java image-processing javax.imageio

convert - decode pdf base64 java



¿Cómo obtener un InputStream desde una Imagen Buffered? (3)

¿Cómo puedo obtener un InputStream desde un objeto BufferedImage? Intenté esto pero ImageIO.createImageInputStream () siempre devuelve NULL

BufferedImage bigImage = GraphicsUtilities.createThumbnail(ImageIO.read(file), 300); ImageInputStream bigInputStream = ImageIO.createImageInputStream(bigImage);

La miniatura de la imagen se está generando correctamente, ya que puedo pintar BigImage en un JPanel con éxito.

Gracias.


Al anular el método toByteArray() , devolviendo el buf (no copiando), puede evitar problemas relacionados con la memoria. Esto compartirá la misma matriz, sin crear otra del tamaño correcto. Lo importante es usar el método size() para controlar el número de bytes válidos en la matriz.

final ByteArrayOutputStream output = new ByteArrayOutputStream() { @Override public synchronized byte[] toByteArray() { return this.buf; } }; ImageIO.write(image, "png", output); return new ByteArrayInputStream(output.toByteArray(), 0, output.size());


Desde http://usna86-techbits.blogspot.com/2010/01/inputstream-from-url-bufferedimage.html

¡Funciona muy bien!

A continuación, le mostramos cómo puede crear un InputStream para una Imagen Buffered:

URL url = new URL("http://www.google.com/intl/en_ALL/images/logo.gif"); BufferedImage image = ImageIO.read(url); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(image, "gif", os); InputStream is = new ByteArrayInputStream(os.toByteArray());


Si está intentando guardar la imagen en un archivo, intente:

ImageIO.write(thumb, "jpeg", new File(....));

Si solo quiere los bytes intente hacer la llamada de escritura, pero páselo ByteArrayOutputStream, que luego puede obtener la matriz de bytes y hacer con ella lo que desee.