391 votes

Comment redimensionner un bitmap dans Android?

J'ai un bitmap pris d'une chaîne Base64 à partir de ma base de données distante ( encodedImage est la chaîne représentant l'image avec Base64):

 profileImage = (ImageView)findViewById(R.id.profileImage);

byte[] imageAsBytes=null;
try {
    imageAsBytes = Base64.decode(encodedImage.getBytes());
} catch (IOException e) {e.printStackTrace();}

profileImage.setImageBitmap(
    BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
 

profileImage est mon ImageView

Ok, mais je dois redimensionner cette image avant de la montrer sur mon ImageView de ma mise en page. Je dois le redimensionner à 120x120.

Quelqu'un peut-il me dire le code pour le redimensionner?

Les exemples que j'ai trouvés ne pouvaient pas être appliqués à une chaîne de bits obtenue en base64.

Merci

616voto

user432209 Points 7460

Changement:

 profileImage.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
 

À:

 Bitmap b = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
profileImage.setImageBitmap(Bitmap.createScaledBitmap(b, 120, 120, false));
 

323voto

jeet.chanchawat Points 1261
public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);

    // "RECREATE" THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
    return resizedBitmap;
}

133voto

ZenBalance Points 1734

Si vous avez déjà un bitmap, vous pouvez utiliser le code suivant pour le redimensionner:

 Bitmap originalBitmap = <original initialization>;

Bitmap resizedBitmap = Bitmap.createScaledBitmap(originalBitmap, newWidth, newHeight, false);
 

3voto

Rajkamal Points 65
profileImage.setImageBitmap(Bitmap.createScaledBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length), 80, 80, false));

1voto

irwinb Points 366

Documents officiels sur ce sujet avec un bon exemple et une explication: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X