2010-08-16 15 views
12

Non sono sicuro di come dovrei farlo. Qualsiasi aiuto sarebbe graditoConverti InputStream (Immagine) in ByteArrayInputStream

+0

Da ByteArrayInputStream sono costruire da 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

Che cosa stai facendo esattamente con le immagini in cui non useresti le classi 'javax.imageio'? – Powerlord

+0

Caricamento su Amazon S3 ... La libreria Java sto utilizzando ByteArrayInputStream richiesto per tutti i dati non basati su stringhe – user398371

risposta

18

Leggere dallo stream di input e scrivere su un ByteArrayOutputStream, quindi chiamare il suo toByteArray() per ottenere l'array di byte.

Creare un ByteArrayInputStream intorno alla matrice di byte per leggere da esso.

Ecco un test rapido:

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

Ero quasi arrivato! Grazie per l'esempio Un vero maestro di IO! – user398371

+0

Siete i benvenuti :) – naikus

1

O prima convertirlo in un array di byte, quindi ad 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); 
Problemi correlati