web-dev-qa-db-fra.com

À quoi sert le paramètre de filtre de 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 paramètres. Tous sont assez évidents sauf pour boolean filter. Est-ce que quelqu'un sait ce qu'il fait?

207
clahey

Une exploration rapide dans le code source SKIA indique que (au moins par défaut) le drapeau FILTER provoque une interpolation bilinéaire simple. Consultez Wikipedia ou votre référence graphique préférée pour connaître les conséquences attendues. Traditionnellement, vous souhaitez effectuer une interpolation bilinéaire ou bicubique lorsque vous agrandissez des images et une moyenne de la superficie lors de la réduction des images. J'ai l'impression (bien que je sois heureux d'être corrigé) qu'Android/Skia effectue un sous-échantillonnage simple lors de la réduction des effectifs sans filtrage, de sorte que vous obtiendrez probablement de meilleurs résultats en filtrant, même lors de la réduction des effectifs. (Il existe une autre méthode pour obtenir une réduction de qualité avec interpolation, consistant à appliquer une série de réductions d’échelle de 50%. Voir http://today.Java.net/pub/a/today/2007/04/03/) périls-of-image-getscaledinstance.html pour plus de détails.)

85
beekeeper

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 vers le bas , mais vous le ferez si vous ' Redimensionnez-le vers le haut .

Qui passe filter = false donnera une image pixellisée en bloc.

Qui passe filter = true vous donnera des bords plus lisses.

Cependant, comme l'a souligné EIYeante dans les commentaires, vous constaterez peut-être encore une différence. Ceci est leur exemple d'image.

248
teedyay

Le filtre définira le FILTER_BITMAP_FLAG pour le dessin qui affecte l'échantillonnage des images bitmap lorsqu'elles sont transformées en fonction de la valeur fournie.

3
Karan