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.
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.
Hast du es versucht:
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
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.
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) {
}
Dies ist ein Arbeitscode
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
Es funktioniert in Kotlin, nachdem buildDrawingCache()
veraltet ist
// convert imageView to bitmap
val bitmap = (imageViewId.getDrawable() as BitmapDrawable).getBitmap()