Konvertieren von android.media.Bild (YUV_420_888) zu Bitmap
Bin ich versucht zu implementieren-Kamera-Vorschau-Bild-Daten-Verarbeitung mit Kamera2-api, wie Sie hier vorgeschlagen: Kamera-Vorschau-Bild-Daten-Verarbeitung mit Android L und Kamera2-API.
Habe ich erfolgreich empfangen Rückrufe mit onImageAvailableListener, aber für die Zukunft die Verarbeitung, die ich brauche zu erhalten bitmap aus YUV_420_888 android.media.Bild. Ich suchte für ähnliche Fragen, aber keiner von Ihnen geholfen.
Könnten Sie bitte mir empfehlen, wie konvertieren von android.media.Bild (YUV_420_888) in Bitmap-oder vielleicht gibt es eine bessere Art und Weise des Zuhörens für eine Vorschau auf die Bilder?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich code schreiben, über diese, und es ist die YUV-Daten Vorschau und chang als JPEG-Datei und ich kann es verwenden, um zu speichern als bitmap byte[] ,oder andere.(Sie können sehen, die Klasse der "Zuweisung" ).
Und SDK-Dokument sagt:
"Für effiziente YUV-Verarbeitung mit android.renderscript: Erstellen Sie eine RenderScript Zuweisung mit einem unterstützten YUV Typ, der IO_INPUT-flag, und einer der Größen zurückgegeben getOutputSizes(Allocation.class), erhalten Sie Dann die Oberfläche mit getSurface()."
hier ist der code, hoffe, es wird Ihnen helfen:https://github.com/pinguo-yuyidong/Camera2/blob/master/camera2/src/main/rs/yuv2rgb.rs
Für eine einfachere Lösung, siehe meine Umsetzung hier:
Konvertierung YUV 420_888 zu Bitmap (vollständiger code)
Die Funktion der Medien.Bild als Eingabe und erstellt drei RenderScript Zuweisungen auf der Grundlage der y-, u - und v-Ebenen. Es folgt die YUV_420_888 Logik, wie in diesem Wikipedia-illustration.
Jedoch, wir haben hier drei separaten Bildebenen für die Y -, U-und V-Kanäle, so nehme ich diese als drei-byte[], d.h. U8 Zuweisungen. Die y-Allokation hat die Größe Breite * Höhe bytes, während die u - und v-allocatons haben eine Größe width * height/4 Byte, was die Tatsache widerspiegelt, dass jeder u-byte umfasst 4 Pixel (dito jedes v byte).
Können Sie dies mit dem eingebauten Renderscript intrinsische,
ScriptIntrinsicYuvToRGB
. Code entnommen Kamera2 api-Imageformat.yuv_420_888 Ergebnisse auf gedrehtes Bild: