#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% качество означает отсутствие сжатия вообще (поэтому наилучшее качество), но, следовательно, потенциально может создавать огромные файлы.