2013-06-03 3 views
17

Я немного поработал с Bitmaps Android и узнал, что сжатие PNG занимает гораздо больше времени, чем даже самое высокое качество JPEG. Намного больше. На моем устройстве это может быть примерно до 10 секунд против 1.Почему сжатие PNG намного медленнее JPEG на Android?

AFAIK, PNG - это в основном фильтрованные строки пикселей, сжатые с дефлятом. Ну, найти лучший фильтр для каждой строки может потребовать много времени, но может быть достигнута компромисс между скоростью и эффективностью сжатия. Это не должно быть медленнее, чем JPEG. Как получилось?

Возможно, это наоборот. Есть ли сверхбыстрая реализация JPEG на Android?

UPDATE: Я действительно просто делать такие вещи, как

mBitmap.compress(CompressFormat.JPEG, 100, stream); 

и

mBitmap.compress(CompressFormat.PNG, 100, stream); 
+1

Вы должны указать код, чтобы показать, как вы сжимаете. –

+21

JPEG может быть аппаратно ускоренным, PNG всегда выполняется в программном обеспечении. JPEG обрабатывает постоянное количество времени. 90%% времени кодирования и декодирования PNG проводится в кодеке flate. Фильтрация занимает тривиальное количество времени. Дефляция на самом высоком уровне качества занимает много времени, потому что он пытается использовать несколько методов для лучшего сжатия. – BitBank

+0

На самом деле, Skia поддерживает аппаратное ускорение JPEG. Тогда я должен проверить свой код на эмуляторе. Если разрыв производительности снижается, то это должно быть так. – akalenuk

ответ

5

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

Смежные вопросы