Разница между методами для масштабирования растрового изображения - PullRequest
8 голосов
/ 20 октября 2010

Существует как минимум два метода масштабирования растрового изображения в Android. Один из них - использовать «inScaled, inDensity, inTargetDensity» в «BitmapFactory.Options» при декодировании источника растрового изображения.Другой - использовать «Матрицу» в «Bitmap.createBitmap».

Что мне интересно, в чем разница между этими двумя методами?Как насчет качества производимого растрового изображения?А как насчет использования памяти?и т.д ...

Ответы [ 3 ]

1 голос
/ 13 августа 2011

Использование BitmapFactory с правильными параметрами inScale позволит вам более эффективно использовать память, чем использование Bitmap.createScaledBitmap() или Bitmap.createBitmap() с матричной шкалой.Однако все сложнее.

Проверьте Как масштабировать растровое растровое изображение на месте без предварительного чтения всего изображения? для получения подробной информации.

0 голосов
/ 18 октября 2012

Единственное отличие, которое я обнаружил, заключалось в том, что использование options.inSampleSize в BitmapFactory для масштабирования растровых изображений не столь гранулировано, поскольку масштаб будет 1 / inSampleSize, а поскольку inSampleSize должен быть целым числом, вы получите масштаб 1 / 2, 1/3, 1/4 и т. Д., Но ничего более гранулированного, чем это.

Bitmap.createScaledBitmap(), хотя и требует больше памяти, обеспечивает более детальное масштабирование с разрешением до 1 дп.

0 голосов
/ 24 апреля 2011

Нет большой разницы. Хотя одним из преимуществ использования BitmapFactory.Options является то, что вы можете проверить ширину / высоту вашего Bitmap, не выделяя память для фактических пикселей Bitmap.

Кроме того, вы можете легко увидеть, какие опции BitmapFactory.Options имеют и сравнить с Bitmap.createBitmap(). В общем, BitmapFactory.Options подобен API "инструмента" для упрощения декодирования и выборки Bitmap s.

...