我分析我的Android应用程序有帮助的内存使用的Eclipse内存分析器 (也称为MAT)。 有时候,我能找到的奇怪情况android.graphics.Bitmap
类,利用堆的很大一部分。 问题是我无法找到该位图的来源,没有文件名 ,不RESOURCEID,什么都没有。 所有的信息我能找到的位图如下:
有一个字段mBuffer
与图像的一个像素阵列,我假设。 但它在一些内部的Android格式,而不是PNG。
问 :我如何可以查看从内存转储此位图表示的图像?
我分析我的Android应用程序有帮助的内存使用的Eclipse内存分析器 (也称为MAT)。 有时候,我能找到的奇怪情况android.graphics.Bitmap
类,利用堆的很大一部分。 问题是我无法找到该位图的来源,没有文件名 ,不RESOURCEID,什么都没有。 所有的信息我能找到的位图如下:
有一个字段mBuffer
与图像的一个像素阵列,我假设。 但它在一些内部的Android格式,而不是PNG。
问 :我如何可以查看从内存转储此位图表示的图像?
我已经找到一种方法来查看这样的位图:
Bitmap
在MAT对象,右键单击mBuffer
场,在弹出菜单中选择“复制” - >“保存值到文件”菜单项,然后保存这个数组的值某些文件 .data
到该文件 .data
文件并单击打开按钮 在这一点上,你应该已经看到原始图像的预览。 如果你没有,你可以尝试“从原始数据载入图像”对话框中改变一些其他参数。
注:获得的宽度和图像的高度,你可以看看mWidth
和mHeight
领域在MAT中的属性部分中的问题显示在图像。
您可以将内存使用来自MAT到PNG转储ImageMagick的命令行。
在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文件EOG ,像eog phone_decor.rgba
对Ubuntu
轻松。