我正在分析我的Android应用程序的内存使用情况。 Eclipse内存分析器 (也称为垫)。有时我可以找到奇怪的例子 android.graphics.Bitmap 类,利用堆的大部分。问题是我找不到这个位图的来源,没有 文件名, ,不 资源,资源, ,没有。我可以为bitmap找到的所有信息如下:bitmap_info

有一个领域 mBuffer 用图像像素阵列,我假设。但它是在一些内部Android格式,而不是PNG。

问题:如何从内存转储中查看此位图表示的图像?

有帮助吗?

解决方案

我已经找到了查看此类位图的方法:

  • 首先,您需要下载并安装 GIMP
  • 接下来,找到你的 Bitmap MAT中的对象,右键单击 mBuffer 字段,在弹出菜单中选择 "复制" -> "将值保存到文件" 菜单项并将此数组的值保存到某个文件中
  • 给予延期 .data 到那个档案
  • 启动GIMP,选择 "档案" -> "打开", ,选择您的 .data 文件并单击 打开 按钮
  • "从原始数据加载图像" 对话框将出现。在这里,您需要为位图设置正确的参数
  • 首先,选择 "图像类型" 作为 "RGB阿尔法" (大多数Android资源都有这种图像类型,但您可能需要尝试其他图像类型)
  • 二、设置正确 阔度身高 对于您的位图(可以在内存转储中找到正确的尺寸)

在这一点上,你应该已经观察到原始图像的预览。如果你没有,你可以尝试改变一些其他参数 "从原始数据加载图像" 对话。

注意事项:要获得图像的宽度和高度,您可以查看 mWidthmHeight 属性部分中的MAT中的字段,如有问题的图像所示。

其他提示

您可以使用以下方法将内存转储从MAT转换为png [医]影像学 在命令行上。

MAT 有关资料 Bitmap 对象右键单击 mBuffer 字段并选择"复制"->"将值保存到文件",用 .rgba 延伸。

您需要注意位图宽度和高度从 mWidthmHeight 字段,您可以在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.rgbaUbuntu 很容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top