Android Размер изображения после сжатия из растрового изображения очень велик, чем загрузка исходного изображения в растровое изображение - PullRequest
0 голосов
/ 22 февраля 2020

Я теперь новичок от ie до android. Я очень запутался при обработке изображений. Сейчас я пытаюсь загрузить изображение JPEG в растровое изображение, а затем преобразовать растровое изображение в байтовый массив и наоборот. Я тестирую с первым случаем: загрузить JPEG в растровое изображение и получить массив байтов. Мое входное изображение 520 x 390 (24-битный цвет) 24KB JPEG. Мой выходной байтовый массив составляет ~ 290000 байт ~ 290 КБ, очень большой по сравнению с исходным. Как я могу преобразовать его в байтовый массив с тем же размером или почти таким же размером, как исходный JPEG? Поэтому мне интересно, будет ли обратное преобразование преобразовывать байтовый массив в jpeg того же размера или нет?

Вот мой код:

    Resources r = this.getResources();
    Bitmap bm  = BitmapFactory.decodeResource(r,R.drawable.plot);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG,100,baos);
    byte[] byteArray = baos.toByteArray(); 

Ответы [ 3 ]

0 голосов
/ 22 февраля 2020

Скорее всего, загруженный вами JPEG имеет уровень сжатия, который делает JPEG меньше, благодаря качеству обмена за размер.

В вашем коде вы устанавливаете уровень сжатия 100, это означает, что сжатия вообще нет, поэтому растровое изображение сохраняется в формате JPEG, но без какого-либо уменьшения размера / качества.

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

0 голосов
/ 22 февраля 2020

Как я могу преобразовать его в байтовый массив того же размера или почти того же размера, что и исходный JPEG?

Просто загрузите файл jpg в байтовый массив, если он вам нужен в байтовом массиве.

Нет необходимости сначала преобразовывать в растровое изображение.

0 голосов
/ 22 февраля 2020

bitmap.compress имеет свойство качества (2-е). попробуйте уменьшить число от 100 до меньшего (0-100).

...