it-swarm.com.de

Android: Wie kann ich ImageView in Bitmap konvertieren?

Ich habe meine Anwendung, die Bilder mit unterschiedlichem Verhältnis anzeigt, deren Größe in (centerInside) imageView geändert wird. Was ich brauche, ist das Erstellen einer Bitmap aus dem ImageView mit Hintergrund (in diesem Fall schwarz). 

So zum Beispiel habe ich Bildschirm 320x480, Vollbild-ImageView mit Bildgröße von 280x480. Wie kann ich eine 320x480-Bitmap daraus erhalten? 

Auf dieser Bildansicht befinden sich einige Logos oder Schaltflächen, die ich nicht in die Bitmap einfügen möchte. Sie sind wie auf der obersten Ebene. Alles, was ich brauche, ist Bitmap mit Bild und schwarzem Rand von einigen Seiten.

37
yosh

Sie können einfach den Image-Cache von imageView verwenden. Es rendert die gesamte Ansicht, während sie angeordnet ist (skaliert, mit einem Hintergrund eingefasst usw.), in eine neue Bitmap.

stellen Sie nur sicher, dass es gebaut wurde.

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

es gibt Ihre Bitmap, wie der Bildschirm es gesehen hat.

91
Greg Giacovelli

Hast du es versucht:

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

Wenn Sie hier nur laut nachdenken (mit zugegebenermaßen wenig Erfahrung mit Grafiken in Java), könnte so etwas funktionieren ?:

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);

Was wollen Sie aus Neugierde erreichen? Es gibt möglicherweise einen besseren Weg, um Ihr Ziel zu erreichen, als Sie möchten.

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

Dies ist ein Arbeitscode

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

Es funktioniert in Kotlin, nachdem buildDrawingCache() veraltet ist

 // convert imageView to bitmap
val bitmap = (imageViewId.getDrawable() as BitmapDrawable).getBitmap()
0
Arshia Ghodsi