2010-08-16 32 views
12

Nie wiem, jak mam to zrobić. Każda pomoc zostanie doceniona:Konwertuj InputStream (obraz) na ByteArrayInputStream

+0

Ponieważ ByteArrayInputStream są skonstruować z bajtem [] http://stackoverflow.com/questions/2163644/in-java-how-can-i-convert-an-inputstream-into-a-byte-array- bajt http://stackoverflow.com/questions/1264709/convert-inputstream-to-byte-in-java – h3xStream

+0

Co dokładnie robisz z obrazami, w których nie używasz klas 'javax.imageio'? – Powerlord

+0

Przesyłanie do Amazon S3 ... Biblioteka Java Używam wymaganego ByteArrayInputStream dla wszystkich danych nie opartych na ciągach – user398371

Odpowiedz

18

Odczytaj ze strumienia wejściowego i napisz do ByteArrayOutputStream, następnie wywołaj jego toByteArray(), aby uzyskać tablicę bajtów.

Utwórz ByteArrayInputStream wokół tablicy bajtów, aby odczytać z niej.

Oto szybki test:

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

Już prawie tam byłem! Dzięki za przykład tho. Prawdziwy mistrz IO! – user398371

+0

Serdecznie zapraszamy :) – naikus

1

Albo najpierw przekonwertować go do tablicy bajtów, a następnie do 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); 
Powiązane problemy