Comment redimensionner une image bitmap eficiently et avec la perte de qualité dans android
J'ai un Bitmap
avec une taille de 320x480
et j'ai besoin de l'étirer sur les différents écrans d'appareils, j'ai essayé d'utiliser ce:
Rect dstRect = new Rect();
canvas.getClipBounds(dstRect);
canvas.drawBitmap(frameBuffer, null, dstRect, null);
il fonctionne, l'image remplit tout l'écran comme je le voulais, mais l'image est pixélisée, et il est mauvais. Ensuite, j'ai essayé :
float scaleWidth = (float) newWidth / width;
float scaleHeight = (float) newHeight / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(frameBuffer, 0, 0,
width, height, matrix, true);
canvas.drawBitmap(resizedBitmap, 0, 0, null);
cette fois, il semble parfait, agréable et lisse, mais ce code doit être dans ma boucle principale du jeu et de la création de Bitmap
s chaque itération rend très lente. Comment puis-je redimensionner mon image, de sorte qu'il ne soit pas pixélisé et se fait vite?
TROUVÉ LA SOLUTION:
Paint paint = new Paint();
paint.setFilterBitmap();
canvas.drawBitmap(bitmap, matrix, paint);
Si vous avez trouvé votre propre solution, vous devez l'ajouter en tant que réponse à votre question et accepter de vous-même alors que d'autres ne pas ajouter indésirables des réponses à votre question.
OriginalL'auteur user924941 | 2011-11-30
Vous devez vous connecter pour publier un commentaire.
Redimensionnement d'une image Bitmap:
Assez explicite: il suffit d'entrer l'objet Bitmap d'origine et les dimensions de l'image, et cette méthode sera de retour pour vous le nouveau redimensionnée Bitmap!
Peut-être, il est utile pour vous.
pour une meilleure qualité de l'image à l'échelle Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, largeur, hauteur, matrice, true);
Réglage du paramètre de filtre n'a aucun effet lors de la mise à l'échelle, l'OP est intéressé à faire.
Comment appelez-vous la fonction?
Pourquoi ne pas utiliser Bitmap resizedBitmap = Bitmap.createScaledBitmap(originalBitmap, newWidth, newHeight, false);
OriginalL'auteur Piyush
Je suis à l'aide de la solution ci-dessus pour redimensionner l'image. Mais les résultats de la partie de l'image est perdue.
Voici mon code.
Et voici l'image de la hauteur et de la largeur :
Aperçu taille de la surface:352:288
Avant de redimensionnement d'image bitmap largeur : 320 Hauteur : 240
CameraPreviewLayout largeur : 1080 Hauteur : 1362
Redimensionnement d'image bitmap largeur : 1022 Hauteur : 1307
OriginalL'auteur Shakeera Bettal