Heim >Java >javaLernprogramm >Warum sind alle Bytes in meinem Puffer 0, nachdem ich copyPixelsToBuffer() für eine Bitmap aufgerufen habe?
Java: Bitmap in Byte-Array konvertieren
Beim Versuch, ein Bitmap-Objekt mit dem bereitgestellten Code in ein Byte-Array zu konvertieren, kann es zu Problemen kommen Ein Problem, bei dem alle Bytes im Puffer nach dem Aufruf von copyPixelsToBuffer() auf 0 bleiben. Trotz der Unveränderlichkeit der von der Kamera zurückgegebenen Bitmap sollte dies keine Auswirkungen auf den Kopiervorgang haben.
Mögliche Grundursache:
Das Code-Snippet verwendet die ByteBuffer-Klasse, um Speicher zuzuweisen und die Bitmaps zu kopieren Pixel in den Puffer. Es greift jedoch direkt auf einen zugrunde liegenden Puffer zu, ohne dessen Offset korrekt festzulegen. Dies kann dazu führen, dass die get()-Methode nur 0 Werte zurückgibt.
Lösung:
Um dieses Problem zu beheben, sollten Sie den folgenden 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>
Hier verbesserter Code:
Mit diesem Ansatz Sie können ein Bitmap-Objekt effektiv in ein Byte-Array konvertieren, ohne dass das Problem des Pufferunterlaufs auftritt.
Das obige ist der detaillierte Inhalt vonWarum sind alle Bytes in meinem Puffer 0, nachdem ich copyPixelsToBuffer() für eine Bitmap aufgerufen habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!