質問

Eclipse Memory Analyser (も知られている)のAndroidアプリのメモリ使用量を分析しています。マットとして)。時々私はHEAPの大きな部分を利用して、android.graphics.Bitmapクラスの奇妙なインスタンスを見つけることができます。問題は、このビットマップのソースを見つけることができないものです。ビットマップの検索できるすべての情報は次のとおりです。 bitmap_info

画像ピクセルの配列を持つフィールド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
.

converteog phone_decor.rgbaのように、 EOG を介して生成されたPNGファイルを確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top