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.
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.
As-tu essayé:
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
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.
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) {
}
C'est un code de travail
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());