Что делает параметр filter для createScaledBitmap?


декларация android.graphics.Bitmap.createScaledBitmap и

public static Bitmap createScaledBitmap
  (Bitmap src, int dstWidth, int dstHeight, boolean filter)

однако в документации не объясняется ни один из параметров. Все они довольно очевидны, за исключением boolean filter. Кто-нибудь знает, что он делает?

3 193

3 ответа:

быстрый просмотр исходного кода SKIA указывает на то, что (по крайней мере, по умолчанию) флаг фильтра заставляет его выполнять простую билинейную интерполяцию. Проверьте Википедию или вашу любимую ссылку на графику, чтобы узнать, каковы ожидаемые последствия. Традиционно требуется выполнить билинейную или бикубическую интерполяцию при увеличении размеров изображений и усреднение площади при уменьшении размеров изображений. У меня создается впечатление (хотя я рад быть исправленным), что Android / Skia делает простую подвыборку, когда сокращение без фильтрации, так что вы, вероятно, получите лучшие результаты от фильтрации даже при сокращении. (Существует альтернативный метод для получения высококачественного сокращения с интерполяцией, включающий выполнение серии 50% - ных сокращений масштаба. См.http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html подробнее.)

расширить ответ Карана: как правило, вы не увидите никакой разницы, если вы масштабирования изображения вниз, но вы будете, если вы масштабируете его до.

передает filter = false приведет к блочному, пиксельному изображению.

передает filter = true даст вам более гладкие края.

однако, как отметил Эйеанте в комментариях, вы все равно можете увидеть разницу. это их пример изображения.

фильтр установит FILTER_BITMAP_FLAG для рисования, которое влияет на выборку растровых изображений при их преобразовании на основе предоставленного значения.