Heim >Java >javaLernprogramm >Warum ist mein Java-Bitmap-Puffer nach der Verwendung von copyPixelsToBuffer mit Nullen gefüllt?
Java-Bitmap in Byte-Array: Pufferproblem lösen
Beim Versuch, eine Java-Bitmap in ein Byte-Array zu konvertieren, stoßen einige Benutzer auf ein Besonderes Problem, bei dem der Puffer nach dem Kopieren der Pixel mit der Methode copyPixelsToBuffer nur Nullen enthält. Trotz der Unveränderlichkeit der von der Kamera zurückgegebenen Bitmap wirft dieses unerwartete Ergebnis Bedenken hinsichtlich der Genauigkeit des Codes auf.
Um dieses Problem zu beheben, sollten Sie einen alternativen Ansatz in Betracht ziehen:
<code class="java">Bitmap bmp = intent.getExtras().get("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] byteArray = stream.toByteArray(); bmp.recycle();</code>
In diesem überarbeiteten Code Anstatt die Pixel direkt in einen Puffer zu kopieren, verwenden wir ByteArrayOutputStream, um die Bitmap in ein PNG-Format (mit einer Qualitätsstufe von 100) zu komprimieren. Dieser Prozess generiert ein Byte-Array, das die Daten der Bitmap enthält. Darüber hinaus gibt der Code die Ressourcen der Bitmap frei, indem er die Recycle-Methode aufruft, um Speicherlecks zu verhindern.
Das obige ist der detaillierte Inhalt vonWarum ist mein Java-Bitmap-Puffer nach der Verwendung von copyPixelsToBuffer mit Nullen gefüllt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!