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:
Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();
In diesem verbesserten Code:
Mit diesem Ansatz können Sie ein Bitmap-Objekt effektiv in ein Byte-Array ohne konvertieren Es tritt ein Pufferunterlaufproblem auf.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3