MAT(Eclipse内存分析器)-如何从内存转储查看位图
-
13-12-2019 - |
题
我正在分析我的Android应用程序的内存使用情况。 Eclipse内存分析器 (也称为垫)。有时我可以找到奇怪的例子 android.graphics.Bitmap
类,利用堆的大部分。问题是我找不到这个位图的来源,没有 文件名, ,不 资源,资源, ,没有。我可以为bitmap找到的所有信息如下:
有一个领域 mBuffer
用图像像素阵列,我假设。但它是在一些内部Android格式,而不是PNG。
问题:如何从内存转储中查看此位图表示的图像?
解决方案
我已经找到了查看此类位图的方法:
- 首先,您需要下载并安装 GIMP
- 接下来,找到你的
Bitmap
MAT中的对象,右键单击mBuffer
字段,在弹出菜单中选择 "复制" -> "将值保存到文件" 菜单项并将此数组的值保存到某个文件中 - 给予延期
.data
到那个档案 - 启动GIMP,选择 "档案" -> "打开", ,选择您的
.data
文件并单击 打开 按钮 - "从原始数据加载图像" 对话框将出现。在这里,您需要为位图设置正确的参数
- 首先,选择 "图像类型" 作为 "RGB阿尔法" (大多数Android资源都有这种图像类型,但您可能需要尝试其他图像类型)
- 二、设置正确 阔度 和 身高 对于您的位图(可以在内存转储中找到正确的尺寸)
在这一点上,你应该已经观察到原始图像的预览。如果你没有,你可以尝试改变一些其他参数 "从原始数据加载图像" 对话。
注意事项:要获得图像的宽度和高度,您可以查看 mWidth
和 mHeight
属性部分中的MAT中的字段,如有问题的图像所示。
其他提示
您可以使用以下方法将内存转储从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文件 eog, ,像 eog phone_decor.rgba
上 Ubuntu
很容易。
不隶属于 StackOverflow