¿Qué hace el parámetro de filtro para crearScaledBitmap?

La statement de android.graphics.Bitmap.createScaledBitmap es

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

Sin embargo, la documentación no explica ninguno de los parámetros. Todos ellos son bastante obvios excepto por el boolean filter . ¿Alguien sabe lo que hace?

Un rápido recorrido por el código fuente de SKIA indica que (al menos por defecto) la bandera FILTER hace que realice una interpolación bilineal directa. Consulte Wikipedia o su referencia gráfica favorita para ver cuáles son las consecuencias esperadas. Tradicionalmente, se desea realizar una interpolación bilineal o bicúbica al convertir las imágenes y promediar el área cuando se reducen las imágenes. Me da la impresión (aunque me alegro de que me corrijan) que Android / Skia hace un submuestreo simple cuando reduce el tamaño sin filtrar, por lo que es probable que obtenga mejores resultados del filtrado incluso cuando se reduzca el tamaño. (Hay un método alternativo para obtener una reducción de alta calidad con la interpolación, que implica hacer una serie de reducciones de escala del 50%. Consulte http://today.java.net/pub/a/today/2007/04/03/perils-of- image-getscaledinstance.html para más detalles).

Para ampliar la respuesta de Karan: Como regla general, no verás ninguna diferencia si bajas la imagen, pero lo harás si la estás escalando.

Pasar filter = false dará como resultado una imagen cuadrada y pixelada.

Pasar filter = true le dará bordes más suaves.

Sin embargo, como señaló EIYeante en los comentarios, es posible que todavía vea una diferencia. Esta es su imagen de ejemplo.

Filter configurará FILTER_BITMAP_FLAG para pintar, lo que afecta al muestreo de mapas de bits cuando se transforman en función del valor que usted proporciona.