Java ビットマップからバイト配列へ: バッファの問題の解決
Java ビットマップをバイト配列に変換しようとすると、一部のユーザーがcopyPixelsToBuffer メソッドを使用してピクセルをコピーした後、バッファーにゼロしか含まれないという特有の問題。カメラから返されたビットマップは不変であるにもかかわらず、この予期せぬ結果により、コードの精度に関する懸念が生じます。
この問題に対処するには、別のアプローチを採用することを検討してください。
<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>
この改訂されたコードではでは、ピクセルをバッファに直接コピーする代わりに、ByteArrayOutputStream を使用してビットマップを PNG 形式 (品質レベル 100) に圧縮します。このプロセスでは、ビットマップのデータを含むバイト配列が生成されます。さらに、コードはメモリ リークを防ぐために、recycle メソッドを呼び出してビットマップのリソースを解放します。
以上がcopyPixelsToBuffer を使用した後、Java ビットマップ バッファーがゼロでいっぱいになるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。