MAT(Eclipse Memory Analyzer) - メモリダンプからビットマップを表示する方法
-
13-12-2019 - |
質問
Eclipse Memory Analyser (も知られている)のAndroidアプリのメモリ使用量を分析しています。マットとして)。時々私はHEAPの大きな部分を利用して、android.graphics.Bitmap
クラスの奇妙なインスタンスを見つけることができます。問題は、このビットマップのソースを見つけることができないものです。ビットマップの検索できるすべての情報は次のとおりです。
画像ピクセルの配列を持つフィールドmBuffer
があります。しかし、それはPNGではなく、いくつかの内部Android形式の形式です。
質問:このビットマップで表される画像をメモリダンプから表示する方法は?
解決
そのようなビットマップを見る方法を見つけました:
- 最初に、 gimp をダウンロードしてインストールする必要があります。
- 次に、Popupメニューの[
Bitmap
]フィールドのmBuffer
オブジェクトを右クリックします。 "copy" - > "ファイルの保存値への保存値" メニューこの配列の項目とセーブ値をファイル に保存する
- そのファイルへの拡張子
.data
を - GIMP、 "file" - > "open" を選択し、
.data
ファイルを選択し、 open ボタン をクリックします。
- "Rawデータから画像をロード" ダイアログが表示されます。ここでは、ビットマップ の正しいパラメータを設定する必要があります。
- まず、 "rgb alpha" として "の画像タイプ" を選択します(ほとんどのAndroidリソースはこの画像タイプを持っていますが、他のイメージタイプで実験する必要があるかもしれません)< / li>
- 2秒間、正しい width と高さを設定します(メモリダンプには正しい寸法があります)
その時点では、すでに元の画像のプレビューを遵守してください。そうでなかった場合は、「Raw Dataからイメージをロードする」の他のパラメータを変更してください。
注:画像の幅と高さを取得するには、問題の画像に示すように、属性セクションのMATのmWidth
フィールドとmHeight
フィールドを調べることができます。
他のヒント
imagemagick を使ってMATからPNGに変換できます。
関連するMAT
オブジェクトの右クリックBitmap
フィールドを右クリックし、「コピー」 - >「ファイルを保存」を選択し、mBuffer
拡張子を持つファイルに名前を付けます。
.rgba
フィールドとmWidth
フィールドからビットマップ幅と高さに注意する必要があります。
mHeight
コマンドラインツールをインストールしている(Ubuntu ImageMagick
用)、次のパラメータを持つapt-get install imagemagick
コマンドを発行します。
convert -size 'width'x'height' -depth 8 filename.rgba filename.png
.
例えば
です convert -size 680x1209 -depth 8 phone_decor.rgba phone_decor.png
.
convert
のeog phone_decor.rgba
のように、 EOG を介して生成されたPNGファイルを確認できます。