Java конвертирует изображение в размер байтового массива - PullRequest
6 голосов
/ 19 января 2012

У меня есть следующий фрагмент кода для преобразования изображения в байтовый массив.

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
baos.flush();
byte[] imageBytes = baos.toByteArray();
baos.close();

Проблема, с которой я сталкиваюсь, заключается в том, что размер изображения составляет около 2,65 МБ. Тем не менее, imageBytes.length дает мне значение более 5,5 МБ. Может кто-нибудь сообщить мне, где я иду не так?

Ответы [ 2 ]

4 голосов
/ 19 января 2012

PNG не всегда точный формат туда и обратно. Его алгоритм сжатия может давать разные результаты.

РЕДАКТИРОВАТЬ: То же самое относится к JPEG.

2 голосов
/ 20 января 2012

Я использовал приведенный ниже код для решения проблемы.

FileInputStream fis = new FileInputStream(inputFile);

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
    for (int readNum; (readNum = fis.read(buf)) != -1;) {
        bos.write(buf, 0, readNum); 
    }
} catch (Exception ex) {

}
byte[] imageBytes = bos.toByteArray();

Предоставлено: http://www.programcreek.com/downloads/convert-image-to-byte.txt Кажется, все работает нормально.Пожалуйста, дайте мне знать, если кто-либо из вас видит какие-либо проблемы в этом подходе.

...