Как сохранить массив байтов как файл изображения на диске?

У меня есть представление массива байтов Изображения. Как сохранить его на диске как файл изображения.

Я уже сделал это

OutputStream out = new FileOutputStream("a.jpg");
out.write(byteArray);
out.flush();
out.close();

Но когда я открываю изображение путем двойного щелчка по нему, это не показывает изображения.

11
задан bluish 2 September 2011 в 14:25
поделиться

3 ответа

Файлы объектов содержат двоичные данные - единственным более высоким уровнем, который большинство компиляторов могут выводить, является ассемблером, поэтому, если вы не можете прочитать, что вы не повезете. Тем не менее, посмотрите на этот вопрос для получения дополнительной информации в этой области.

-121--1738654-

, кроме неспособности использовать блок TRY /, наконец (по крайней мере, в указанном вами коде), который должен быть в порядке. (Вам не нужно промывать выходной поток, если вы закрываете его, кстати.)

Как не работает, что предлагает ByTearRay На самом деле Содержать JPEG-кодируемое изображение. Как вы создали BYTEARRAY , чтобы начать с? Если это «необработанное» представление, вы, вероятно, захотите его кодировать, например Используя пакет javax.imageio .

8
ответ дан 3 December 2019 в 06:21
поделиться

Вы могли бы использовать класс класса :

FileOutputStream fos = new FileOutputStream("image.jpg");
try {
    fos.write(someByteArray);
}
finally {
    fos.close();
}
8
ответ дан 3 December 2019 в 06:21
поделиться

Вы можете использовать API Imageio .

Детали могут быть немного волосатыми, но сначала вы, вероятно, захотите создать буферные данные с использованием типа Type_byte_indexed и некоторый подходящий экземпляр indexcolormodel. Затем поместите свой байтовый массив там. Подсказка: Вы можете получить внутреннее представление буферизации с помощью:

myDataBuffer = myBufferedImage.getRaster().getDataBuffer();

, которые, вероятно, вернут буфер данных типа DataufferByte (Check!), Из которого вы получаете байтовый массив с

myByteArray = ((DataBufferByte) myDataBuffer).getData();

, тогда вы можете использовать System.arrayCopy для копирования Ваш байтовый массив на это.

3
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: