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, excepto boolean filter
. ¿Alguien sabe lo que hace?
Para ampliar la respuesta de Karan: Como regla general, usted no verá ninguna diferencia si usted está escalando la imagen de abajo , pero usted si usted está escalarla hasta .
Su aprobación
filter = false
dará como resultado una imagen en bloques y pixelada.Pasar
filter = true
le dará bordes más suaves.Sin embargo, como EIYeante señaló en los comentarios, aún puede ver una diferencia. Esta es su imagen de ejemplo.
fuente
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
solo estoy cambiando el parámetro de filtro.El filtro establecerá FILTER_BITMAP_FLAG para pintar, lo que afecta el muestreo de mapas de bits cuando se transforman en función del valor que proporcione.
fuente
Un poco tarde para la fiesta, pero pensé que algunas imágenes de muestra podrían aclarar el problema.
La API de Android no especifica qué tipo de filtro se aplicaría, por lo que supongo que la pregunta es: ¿desea que sus píxeles permanezcan como están (como desearía en el arte de 8 bits) o está bien aplicar una transformación a haga que la imagen sea más agradable (como desearía en las fotografías).
Hay una pregunta más general sobre si y cómo filtrar en superusuario .
Jeff Atwood dice:
fuente