Android JPEG в растровое изображение = уменьшение размера

Я заметил, что после того, как я преобразовал свой файл jpeg в растровое изображение, размер уменьшился почти вдвое, это нормально? Я делаю что-то вроде этого:

    bmp1 = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()
                            + "/Test/test" + System.currentTimeMillis()
                            + ".jpg");
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp1.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] byteArray = stream.toByteArray();
    System.out.println(byteArray.length);

person Maurice    schedule 15.07.2011    source источник
comment
Кажется, вы распаковываете jpeg и сжимаете его обратно в jpeg ... поэтому, если он меньше, вы должны сжимать с более низким качеством, чем оригинал.   -  person Torp    schedule 15.07.2011
comment
Хотя другие ответы верны, если декодированное растровое изображение было первоначально снято с помощью камеры или другого цифрового устройства, декодирующего изображение, и его повторное сжатие удалит все данные Exif, которые могут составлять до 65 535 байтов. Просто кое-что, что нужно иметь в виду.   -  person alex.m.brown    schedule 10.03.2012


Ответы (1)


Ваш код декодирует jpeg в растровое изображение, а затем снова сжимает его в jpeg. Повторное сжатие, вероятно, уменьшит размер файла за счет снижения качества изображения.

Сжатие Jpeg (даже с качеством 100) не без потерь.

person Rob    schedule 15.07.2011