Сжатие изображений и загрузка процессора

#android #bitmap #image-compression

#Android #растровое изображение #сжатие изображений

Вопрос:

Android и Bitmap класс, у которого есть Compress метод (см. Здесь ).

Сжатие имеет quality parameter . Согласно документации, при сжатии в формат JPEG:

Сжатие в формат JPEG. качество 0 означает сжатие для наименьшего размера. 100 означает сжатие для максимального визуального качества.

Мой вопрос: будет ли использование более высокого значения (например, 100) использовать больше процессора (т. Е. Занимать больше времени), чем меньшее значение (например, 50)?

Я ожидал бы, что ответ будет: «Да, потому что выполнение большего сжатия занимает больше времени»… но я действительно не знаю.

Ответ №1:

В формате Jpeg более высокое качество означает меньшее сжатие, следовательно, меньшую загрузку процессора.

Более высокое качество не означает, что это сделает фотографию лучше, это заблуждение. В формате Jpeg более высокое качество означает меньшее сжатие и сохранение качества, максимально приближенного к исходному снимку.Сжатие снижает текущее качество.

Ближе к 100 означает меньшее сжатие для сохранения качества, поэтому он использует меньше процессорного времени, поскольку ему нужно меньше сжимать. Ближе к 0 означает большее сжатие в обмен на качество, поэтому он использует больше процессорного времени, поскольку ему нужно больше сжимать.

  • Большее сжатие (направление на 0) = меньшее качество, меньший размер файла, большая загрузка процессора.
  • Меньшее сжатие (направление на 100) = большее качество, больший размер файла, меньшая загрузка процессора.

Что вам нужно учитывать, так это то, что в Android сжатие Jpeg изначально реализовано на C / C , поэтому выполняется очень быстро. Таким образом, процессорное время не является важным фактором, который следует принимать во внимание, учитывая, что вы должны сжимать для достижения наилучшей производительности в фоновом потоке.

Кроме того, вам следует избегать в большинстве сценариев использования 100% качества, поскольку оптимальным является любое значение от 80% до 95%.

100% качество означает отсутствие сжатия вообще (поэтому наилучшее качество), но, следовательно, потенциально может создавать огромные файлы.