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 à l'exception de boolean filter
. Quelqu'un sait-il ce qu'il fait?
Pour développer la réponse de Karan: En règle générale , vous ne verrez aucune différence si vous augmentez l' échelle de votre image vers le bas , mais vous si vous mettre à l' échelle en place .
Le dépassement
filter = false
se traduira par une image pixellisée en blocs.Passer
filter = true
vous donnera des bords plus lisses.Cependant, comme EIYeante l'a souligné dans les commentaires, vous pouvez toujours voir une différence. Ceci est leur exemple d'image.
la source
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
je change juste le paramètre de filtre.Le filtre définira le 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.
la source
Un peu tard pour la fête, mais j'ai pensé que quelques exemples d'images pourraient clarifier le problème.
L'API d'Android ne spécifie pas quel type de filtre serait appliqué, donc je suppose que la question est: voulez-vous que vos pixels restent tels qu'ils sont (comme vous le voudriez dans l'art 8 bits) ou est-il correct d'appliquer une transformation à rendre l'image plus agréable au goût (comme vous le voudriez sur les photos).
Il y a une question plus générale à savoir si et comment filtrer sur superutilisateur .
Dit Jeff Atwood:
la source