ホームページ >Java >&#&チュートリアル >ビットマップで copyPixelsToBuffer() を呼び出した後、バッファ内のすべてのバイトが 0 になるのはなぜですか?
Java: ビットマップをバイト配列に変換する
提供されたコードを使用してビットマップ オブジェクトをバイト配列に変換しようとすると、次のような問題が発生する可能性があります。 copyPixelsToBuffer() を呼び出した後、バッファ内のすべてのバイトが 0 のままになる問題。カメラから返されたビットマップは不変ですが、コピー プロセスには影響しません。
潜在的な根本原因:
コード スニペットは ByteBuffer クラスを使用してメモリを割り当て、ビットマップのコピーを行います。ピクセルをバッファに取り込みます。ただし、オフセットを正しく設定せずに、基礎となるバッファに直接アクセスします。これにより、get() メソッドが 0 値のみを返す可能性があります。
解決策:
この問題を修正するには、次のアプローチの使用を検討してください。
<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>
この例では改善されたコード:
このアプローチを使用すると、バッファ アンダーフローの問題が発生することなく、Bitmap オブジェクトをバイト配列に効果的に変換できます。
以上がビットマップで copyPixelsToBuffer() を呼び出した後、バッファ内のすべてのバイトが 0 になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。