2010-08-16 29 views
12

No estoy seguro de cómo se supone que debo hacer esto. Cualquier ayuda sería apreciadaConvertir InputStream (Imagen) a ByteArrayInputStream

+0

Desde ByteArrayInputStream son construir a partir de byte [] http://stackoverflow.com/questions/2163644/in-java-how-can-i-convert-an-inputstream-into-a-byte-array- byte http://stackoverflow.com/questions/1264709/convert-inputstream-to-byte-in-java – h3xStream

+0

¿Qué haces exactamente con imágenes en las que no estarías usando las clases 'javax.imageio'? – Powerlord

+0

Cargando en Amazon S3 ... La biblioteca Java que estoy usando requiere ByteArrayInputStream para todos los datos que no están basados ​​en cadenas – user398371

Respuesta

18

Lectura desde el flujo de entrada y escriba a ByteArrayOutputStream, luego llame a toByteArray() para obtener la matriz de bytes.

Crea un ByteArrayInputStream alrededor del conjunto de bytes para leer de él.

Aquí es una prueba rápida:

import java.io.*; 

public class Test { 


     public static void main(String[] arg) throws Throwable { 
      File f = new File(arg[0]); 
      InputStream in = new FileInputStream(f); 

      byte[] buff = new byte[8000]; 

      int bytesRead = 0; 

      ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

      while((bytesRead = in.read(buff)) != -1) { 
      bao.write(buff, 0, bytesRead); 
      } 

      byte[] data = bao.toByteArray(); 

      ByteArrayInputStream bin = new ByteArrayInputStream(data); 
      System.out.println(bin.available()); 
     } 
} 
+0

¡Ya casi estaba allí! Gracias por el ejemplo tho. Un verdadero maestro de IO! – user398371

+0

De nada :) – naikus

1

miembro O convertirlo en una matriz de bytes, a continuación, a un ByteArrayInputStream.

File f = new File(arg[0]); 
InputStream in = new FileInputStream(f); 
// convert the inpustream to a byte array 
byte[] buf = null; 
try { 
    buf = new byte[in.available()]; 
    while (in.read(buf) != -1) { 
    } 
} catch (Exception e) { 
    System.out.println("Got exception while is -> bytearr conversion: " + e); 
} 
// now convert it to a bytearrayinputstream 
ByteArrayInputStream bin = new ByteArrayInputStream(buf); 
Cuestiones relacionadas