Byte-Array-Konvertierung aus Java-Bitmap neu bewertet
Beim Versuch, eine Java-Bitmap in ein Byte-Array zu konvertieren, stößt ein Entwickler auf ein besonderes Problem wobei das resultierende Byte-Array alle Nullen enthält, obwohl die Bitmap von der Kamera erfasst wurde.
Der für diese Konvertierung verwendete Codeausschnitt umfasste das Extrahieren der Zeilenbytes und der Höhe der Bitmap sowie die Zuweisung eines ByteBuffers der berechneten Größe. CopyPixelsToBuffer wurde dann verwendet, um Bilddaten in den Puffer zu übertragen, gefolgt von der Byte-Extraktion in ein neu erstelltes Byte-Array.
Bei der Prüfung scheint der Code solide zu sein. Das zugrunde liegende Problem liegt jedoch in der Unveränderlichkeit der Bitmap. Obwohl copyPixelsToBuffer beabsichtigt, eine Kopie der Bitmap-Daten zu erstellen, bleibt das zugrunde liegende Bild aufgrund seiner Unveränderlichkeit unverändert, was zu einem mit Nullen gefüllten Puffer führt.
Ein alternativer Ansatz bietet eine endgültige Lösung:
ByteArrayOutputStream
Um die Bitmap effektiv in ein Byte-Array zu konvertieren, sollten Sie die Verwendung von ByteArrayOutputStream zusammen mit der Komprimierungsmethode von Bitmap in Betracht ziehen. Diese Technik komprimiert die Bitmap in ein bestimmtes Format (in diesem Fall PNG) und schreibt die komprimierten Daten in ein Byte-Array. Anschließend kann die Bitmap recycelt werden, um Speicher freizugeben.
Durch die Implementierung dieser Strategie können Sie eine Java-Bitmap zuverlässig in ein Byte-Array konvertieren, das mit copyPixelsToBuffer aufgetretene Problem lösen und ein gültiges Array von Bytes erzeugen, die das Bild darstellen .
Das obige ist der detaillierte Inhalt vonWarum führt meine Java-Bitmap-Konvertierung in ein Byte-Array nur zu Nullen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!