Que fait le paramètre filter à createScaledBitmap?

La déclaration de android.graphics.Bitmap.createScaledBitmap est

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

Cependant, la documentation n’explique aucun des parameters. Tous sont assez évidents, sauf pour le boolean filter . Est-ce que quelqu’un sait ce qu’il fait?

Une recherche rapide dans le code source de SKIA indique que (au moins par défaut) l’indicateur FILTER provoque une interpolation bilinéaire directe. Consultez Wikipedia ou votre référence graphique préférée pour voir quelles sont les conséquences attendues. Traditionnellement, vous souhaitez effectuer une interpolation bilinéaire ou bicubique lors de la conversion d’images et de la moyenne des zones lors de la réduction des images. J’ai l’impression (bien que je sois content d’être corrigé) qu’Android / Skia effectue un sous-échantillonnage simple lors de la réduction des effectifs sans filtrage, vous aurez donc probablement de meilleurs résultats lors du filtrage, même en cas de réduction des effectifs. (Il existe une autre méthode pour obtenir une réduction des effectifs de haute qualité grâce à l’interpolation, qui consiste à effectuer une série de réductions d’échelle de 50%. Voir http://today.java.net/pub/a/today/2007/04/03/perils-of- image-getscaledinstance.html pour plus de détails.)

Pour développer la réponse de Karan: En règle générale, vous ne verrez aucune différence si vous réduisez votre image, mais vous le ferez si vous augmentez votre taille.

En passant filter = false , l’image obtenue sera pixellisée.

Passer filter = true vous donnera des contours plus lisses.

Toutefois, comme EIYeante l’a fait remarquer dans les commentaires, vous pouvez toujours voir une différence. Ceci est leur image d’exemple.

Filter définira FILTER_BITMAP_FLAG pour la peinture, ce qui affecte l’échantillonnage des bitmaps lorsqu’ils sont transformés en fonction de la valeur que vous fournissez.