背景:Androidビットマップピクセル - ファイルに直接書き込みますか?
目標は、かなり大きい(少なくとも2048 x 2048ピクセル)画像ファイルをOpenGLレンダリングされたデータで書き込むことです。
今日私はint配列に32ビット(argb8888)のピクセルデータを取得するために最初にglReadPixelsを使用します。
次に、新しい短い配列にデータをコピーし、32ビットのargb値を16ビット(rgb565)値に変換します。この時点では、画像を上下逆にして色順を変えて、OpenGL画像データをAndroidのビットマップデータ(異なる行順と色順)に対応させます。
最後に、pngファイルとしてディスクに保存できるように、Bitmap()インスタンスと.copyPixelsFromBuffer(バッファb)を作成します。
しかし、私はいくつかの携帯電話のメモリクラッシュを避けるために、より効率的なメモリを使いたいと思います。
質問:
私は[] int型から最初の変換をスキップすることができます - >ショート[]何らかの方法で(画素データのための新しい配列の割り当てを避けるため)?たぶんバイト配列/バッファを使用して、変換したピクセルを同じ配列に書き込んでいます。
さらに重要:ビットマップの作成をスキップしてもかまいません(ここではプログラムがクラッシュします)。ディスクを作業イメージファイルとして使用します(ビットマップオブジェクト内のピクセルデータの再割り当てを避けます)。
編集:私は、ファイルに直接データを書き込むことができれば、多分私は、ファイルがでメモリに読み込むことができ、ファイルサイズとどのくらいの速に応じて、16ビットの画素データに変換する必要はありません後のポイント。
+1についてよく書かれた質問 – Ridcully