android - scalegesturedetector - ¿Qué hace el parámetro de filtro para createScaledBitmap?
responsive design android (3)
La declaración 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 a excepción del boolean filter
. ¿Alguien sabe lo que hace?
El filtro establecerá FILTER_BITMAP_FLAG para pintar, lo que afecta el muestreo de los mapas de bits cuando se transforman según el valor que proporcione.
Para ampliar la respuesta de Karan: Como regla general, no verá ninguna diferencia si está reduciendo su imagen, pero sí si la está ampliando.
Pasar filter = false
dará como resultado una imagen pixellada en bloque.
Pasar filter = true
te dará bordes más suaves.
Sin embargo, como señaló EIYeante en los comentarios, es posible que aún veas una diferencia. Esta es su imagen de ejemplo.
Una búsqueda rápida a través del código fuente de SKIA indica que (al menos de forma predeterminada) el indicador FILTRO hace que se 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 aumentar el tamaño de las imágenes y promediar el área al reducir el tamaño de las imágenes. Me da la impresión (aunque me alegra que me corrijan) que Android / Skia realiza un submuestreo simple cuando reduce el tamaño sin filtrar, por lo que es probable que obtenga mejores resultados al filtrar incluso cuando reduzca el tamaño. (Hay un método alternativo para obtener una reducción de calidad de alta calidad con interpolación, que implica realizar 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.)