2011-04-01 13 views
7

Estoy tratando de obtener el bytearray de una imagen búfer, pero la longitud de mi ByteArrayOutputstream siempre es cero y no tengo bytes. Esto es lo que estoy haciendoBufferedImage to Bytes Java

cualquier idea por qué esto no está funcionando

BufferedImage scaledPicture = ..... 

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(scaledPicture, extension, baos); 
baos.flush(); 
byte[] toByteArray = baos.toByteArray(); 
baos.close(); 
return toByteArray; 

¿Alguna idea?

Respuesta

3

¿Cuál es el valor de retorno de ImageIO.write? ¿El ImageIO.getImageWritersByFormatName con su extensión devuelve al menos 1 ImageWriter? Si no, entonces el formato puede no ser compatible.

+0

Muchas gracias por eso. Se devuelve falso, por lo que no se encontró ningún escritor. Como la imagen se carga desde el navegador, ¿cómo determino el formato o cómo especifico un formato en la llamada ImageIO.write? –

+0

@Farouk Alhassan Yo trataría de usar 'ImagIO.getImageWritersBySuffix' y ver si le devuelve' 'ImageWriter's. Si es así, puede usarlos fácilmente con su método 'write' para escribir su' RenderedImage'. El método que estás usando en este momento es simplemente un simple envoltorio alrededor de eso. – Melv

+0

Muchas gracias. Se corrigió después de un día. fue puramente porque una unidad vieja no probada estaba calculando erróneamente la extensión del archivo, devolviendo .jpeg en lugar de jpeg ¡por lo tanto un día perdido! Lecciones aprendidas. De todos modos, sé más hoy que ayer, así que estoy agradecido. tx –

1

¿La llamada 'ImageIO.write (...)' es verdadera? Si no, la JVM podría no encontrar un escritor con el formato adecuado.