私のメモリ使用量を分析していますAndroidアプリを使用して Eclipse Memory Analyzer (MATとも呼ばれます)。時々、Android.graphics.Bitmap
クラスの奇妙なインスタンスを見つけて、ヒープの大部分。問題は、このビットマップのソースが見つからないことです。filename、noresourceID、何もありません。ビットマップについて私が見つけることができるすべての情報は次のとおりです:
画像ピクセルの配列を持つフィールドmBuffer
があると思います。しかし、それはいくつかの内部Android=形式であり、PNGではありません。
質問:このビットマップで表される画像をメモリダンプから表示するにはどうすればよいですか?
私はそのようなビットマップを表示する方法を見つけました:
Bitmap
オブジェクトを見つけ、mBuffer
フィールドを右クリックして、ポップアップメニューで "Copy"->「値をファイルに保存」メニュー項目とこの配列の値をファイルに保存.data
をそのファイルに.data
ファイルをクリックし、開くボタンをクリックしますその時点で、元の画像のプレビューをすでに観察しているはずです。変更していない場合は、「ローデータからイメージをロード」ダイアログで他のパラメーターを変更してみてください。
注:画像の幅と高さを取得するには、問題の画像に示すように、属性セクションのMATのmWidth
およびmHeight
フィールドを確認できます。
コマンドラインで ImageMagick を使用して、メモリダンプをMATからpngに変換できます。
関連するMAT
オブジェクトのBitmap
でmBuffer
フィールドを右クリックして[コピー]-> [ファイルに値を保存]を選択し、.rgba
拡張子を付けてファイルに名前を付けます。
mWidth
およびmHeight
フィールドのビットマップの幅と高さをメモする必要があります。これらは、Bitmapオブジェクトで確認できます。
ImageMagick
コマンドラインツールがインストールされている場合(Ubuntu apt-get install imagemagick
の場合)、次のパラメーターを指定してconvert
コマンドを発行します。
convert -size 'width'x'height' -depth 8 filename.rgba filename.png
例えば
convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png
生成されたpngファイルは、Ubuntu
のeog phone_decor.rgba
のように eog で簡単に確認できます。