2009-10-16 3 views

Odpowiedz

65
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes)); 
+6

To nie jest odpowiedź na pytanie, pytanie było do pisania do pliku obrazu. Ta odpowiedź jest przeznaczona do odczytu z pliku obrazu. Co z większymi głosami? – Sixtoo

+5

Tytuł mówi, że, ale pytanie mówi, że mają one tablicę bajtów i potrzebują obrazu, to właśnie to robi. –

1

według docs Java, wygląda na to trzeba użyć the MemoryImageSource Class umieścić tablicę bajtów do obiektu w pamięci, a następnie użyj Component.createImage (ImageProducer) next (przechodząc w MemoryImageSource , który implementuje ImageProducer).

20

Jeśli znasz typ obrazu i chcesz tylko wygenerować plik, nie ma potrzeby, aby uzyskać wystąpienie BufferedImage. Po prostu zapisz bajty do pliku z poprawnym rozszerzeniem.

OutputStream out = null; 

try { 
    out = new BufferedOutputStream(new FileOutputStream(path)); 
    out.write(bytes); 
} finally { 
    if (out != null) out.close(); 
} 
2
From Database. 
Blob blob = resultSet.getBlob("pictureBlob");    
byte [] data = blob.getBytes(1, (int) blob.length()); 
BufferedImage img = null; 
try { 
img = ImageIO.read(new ByteArrayInputStream(data)); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
drawPicture(img); // void drawPicture(Image img);