Подтвердить что ты не робот

Объект Byte Array to Image

Мне присваивается массив byte [] в Java, который содержит байты для изображения, и мне нужно вывести его в изображение. Как я могу это сделать?

Большое спасибо

4b9b3361

Ответ 1

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

Ответ 2

Если вы знаете тип изображения и хотите генерировать файл, вам не нужно получать экземпляр BufferedImage. Просто напишите байты в файл с правильным расширением.

OutputStream out = null;

try {
    out = new BufferedOutputStream(new FileOutputStream(path));
    out.write(bytes);
} finally {
    if (out != null) out.close();
}

Ответ 3

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);

Ответ 4

В соответствии с документами Java, похоже, вам нужно использовать класс MemoryImageSource, чтобы поместить ваш байтовый массив в объект в памяти, а затем используйте Component.createImage(ImageProducer) next (передача в ваш MemoryImageSource, который реализует ImageProducer).

Ответ 5

Так как кажется, что вы уже знаете, в каком формате находится массив byte [] (например, RGB, ARGB, BGR и т.д.), вы могли бы использовать BufferedImage.setRGB(...) или комбинация BufferedImage.getRaster() и WritableRaster.setPixels(...) или WritableRaster.setSamples(...). К сожалению, оба этих метода требуют, чтобы вы преобразовали свой байт [] в один из int [], float [] или double [] в зависимости от формата изображения.