web-dev-qa-db-fra.com

Android: comment convertir une image entière en bitmap?

J'ai mon application qui affiche des images avec un rapport différent, redimensionné dans imageView (centerInside). Ce dont j'ai besoin, c'est de créer un bitmap à partir de l'image, y compris l'arrière-plan (noir dans ce cas). 

Ainsi, par exemple, j'ai un écran de périphérique 320x480, une image plein écran redimensionnée à 280x480. Comment puis-je obtenir un bitmap 320x480? 

En plus de cette image, j'ai des logos ou des boutons que je ne souhaite pas inclure en bitmap, ils sont comme sur la couche supérieure. Tout ce dont j'ai besoin est un bitmap avec une image et une bordure noire de certains côtés.

37
yosh

Vous pouvez simplement utiliser le cache d'image de l'imageView. Il rendra la vue entière telle qu'elle est mise en forme (mise à l'échelle, bordée d'un fond, etc.) en un nouveau bitmap.

assurez-vous simplement qu'il est construit.

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();

il y a votre bitmap tel que l'écran l'a vu.

91
Greg Giacovelli

As-tu essayé:

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
56
Cristian

Il suffit de penser à voix haute (avec certes une petite expertise dans le graphisme en Java), peut-être que quelque chose comme cela fonctionnerait ?:

ImageView iv = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
iv.draw(canvas);

Par curiosité, qu'essayez-vous d'accomplir? Il peut y avoir un meilleur moyen d’atteindre votre objectif que ce que vous avez en tête.

4
kcoppock
try {
        photo.setImageURI(Uri.parse("Location");
        BitmapDrawable drawable = (BitmapDrawable) photo.getDrawable();
        Bitmap bitmap = drawable.getBitmap();
        bitmap = Bitmap.createScaledBitmap(bitmap, 70, 70, true);
        photo.setImageBitmap(bitmap);

    } catch (Exception e) {

    }
1
Mansh Sharma

C'est un code de travail

imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
1
Adil Raza Bangash