Wie erhalte ich ein Bitmap-Objekt von einem Uri (wenn es mir gelingt, es in /data/data/MYFOLDER/myimage.png
oder zu speichern
file///data/data/MYFOLDER/myimage.png
), um es in meiner Anwendung zu verwenden?
Hat jemand eine Idee, wie dies erreicht werden kann?
android
uri
android-image
android-bitmap
ilredelweb
quelle
quelle
Antworten:
. . WICHTIG: Siehe Antwort von @Mark Ingram unten und @pjv für eine bessere Lösung. . .
Sie könnten dies versuchen:
Denken Sie jedoch daran, dass diese Methode nur innerhalb eines Threads aufgerufen werden sollte (nicht GUI-Thread). Ich bin eine AsyncTask.
quelle
Hier ist die richtige Vorgehensweise:
Wenn Sie sehr große Bilder laden müssen, wird sie mit dem folgenden Code in Kacheln geladen (wobei große Speicherzuordnungen vermieden werden):
Siehe die Antwort hier
quelle
Hier ist die richtige Vorgehensweise, bei der auch die Speichernutzung im Auge behalten wird:
Der Aufruf von getBitmap () aus Mark Ingrams Beitrag ruft auch decodeStream () auf, sodass Sie keine Funktionalität verlieren.
Verweise:
Android: Holen Sie sich eine Miniaturansicht des Bildes auf der SD-Karte, wenn Sie Uri des Originalbilds erhalten
Umgang mit großen Bitmaps
quelle
getPowerOfTwoForSampleRatio()
übersprungen werden. Siehe: developer.android.com/reference/android/graphics/…und ja Pfad muss in einem Format wie diesem sein
file:///mnt/sdcard/filename.jpg
quelle
Dies ist die einfachste Lösung:
quelle
quelle
Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);
Es scheint, dass
MediaStore.Images.Media.getBitmap
in veraltet warAPI 29
. Die empfohlene Methode ist die Verwendung,ImageDecoder.createSource
die hinzugefügt wurdeAPI 28
.So erhalten Sie die Bitmap:
quelle
Sie können Bitmap wie folgt von uri abrufen
quelle
quelle
Verwenden Sie die metA startActivityForResult wie unten
Und Sie können Ergebnis wie folgt erhalten:
quelle
Ich habe viele Möglichkeiten ausprobiert. diese Arbeit für mich perfekt.
Wenn Sie Pictrue aus der Galerie auswählen. Sie müssen vorsichtig sein, wenn Sie
Uri
vonintent.clipdata
oder kommenintent.data
, da einer von ihnen in einer anderen Version möglicherweise null ist.quelle
Sie können diese Struktur tun:
Auf diese Weise können Sie eine Uri einfach in eine Bitmap konvertieren. hoffe hilf dir
quelle
Ein Teil
getBitmap
davon ist jetzt beraubt. Ich verwende den folgenden Ansatz in Kotlinquelle
quelle
Vollständige Methode, um Bild-Uri aus der mobilen Galerie zu erhalten.
quelle
(KOTLIN) Ab dem 7. April 2020 hat keine der oben genannten Optionen funktioniert, aber hier ist, was für mich funktioniert hat:
Wenn Sie die Bitmap in einem Wert speichern und damit eine Bildansicht festlegen möchten, verwenden Sie Folgendes:
val bitmap = BitmapFactory.decodeFile(currentPhotoPath).also { bitmap -> imageView.setImageBitmap(bitmap) }
Wenn Sie nur die Bitmap und imageView festlegen möchten, verwenden Sie Folgendes:
BitmapFactory.decodeFile(currentPhotoPath).also { bitmap -> imageView.setImageBitmap(bitmap) }
quelle