相关疑难解决方法(0)

如何实际查看从Android堆转储中获取的位图

在我的应用程序中跟踪严重内存问题的过程中,我查看了我的应用程序中的几个堆转储,并且大多数时候我有一个我不知道的巨大位图.

它需要9.4MB或9,830,400字节,或者实际上是每像素4字节的1280x1920图像.

我在Eclipse MAT中检查过它确实是一个字节[9830400],它有一个传入引用,它是一个android.graphics.Bitmap.

我想把它转储到一个文件,并尝试看到它.我无法理解它的来源.我所有绘图中最大的形象是640x960 png,不到3MB.

我试图使用Eclipse"将值复制到文件",但我认为它只是将缓冲区打印到文件中,我不知道任何可以读取字节流并将其显示为每像素4个字节的图像软件图片.

任何的想法?

这是我尝试过的:将字节数组转储到文件中,将其推送到/ sdcard/img,然后加载如下活动:

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        final File inputFile = new File("/sdcard/img");
        final FileInputStream isr = new FileInputStream(inputFile);
        final Bitmap bmp = BitmapFactory.decodeStream(isr);
        ImageView iv = new ImageView(this);
        iv.setImageBitmap(bmp);
        setContentView(iv);
        Log.d("ImageTest", "Image was inflated");
    } catch (final FileNotFoundException e) {
        Log.d("ImageTest", "Image was not inflated");
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有看到任何东西.

你知道如何编码图像吗?说它存储在byte[] buffer.buffer[0]是红色,buffer[1]是绿色等?

android bitmap eclipse-mat

6
推荐指数
1
解决办法
2435
查看次数

标签 统计

android ×1

bitmap ×1

eclipse-mat ×1