Otrzymuję tablicę bajtów [] w Javie, która zawiera bajty dla obrazu i muszę ją wyprowadzić na obraz. Jak miałbym to zrobić?Obiekt Byte Array to Image
Dużo dzięki
Otrzymuję tablicę bajtów [] w Javie, która zawiera bajty dla obrazu i muszę ją wyprowadzić na obraz. Jak miałbym to zrobić?Obiekt Byte Array to Image
Dużo dzięki
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
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).
Ponieważ brzmi to jak wiesz już jaki format bajt [] tablica jest w (na przykład RGB, aRGB, BGR itp) może być w stanie używać BufferedImage.setRGB(...) lub kombinacji BufferedImage.getRaster() i WritableRaster.setPixels(...) lub WritableRaster.setSamples(...). Na szczęście obie te metody wymagają przekształcenia bajtu [] w jeden z int [], float [] lub double [] w zależności od formatu obrazu.
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();
}
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);
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
Tytuł mówi, że, ale pytanie mówi, że mają one tablicę bajtów i potrzebują obrazu, to właśnie to robi. –