将html网页转换为位图,Android后,内存不足

时间:2013-03-22 07:11:33

标签: android memory-management webview bitmap

我使用以下代码获取在WebView中加载的html网页的Bitmap图像,但由于内存不足而导致崩溃。如果直接将picturedrawable转换为Bitmap,我该如何避免内存问题。

有没有办法直接将文件加载到压缩格式lke jpg?还是有其他方法来处理这个问题?

使用Bitmapfactory缩小图像尺寸看起来不太可能,因为Bitmap已经创建,因此对它做任何事情都为时已晚。

    wv = (WebView)findViewById(R.id.webView1);
    wv.loadUrl("http://www.google.com");
    WebSettings webSettings = wv.getSettings();
    webSettings.setJavaScriptEnabled(true);

    Picture picture = wv.capturePicture();

   HTMLBitmap = pictureDrawable2Bitmap(picture);
        Toast.makeText(HTMLActivity.this, "bitmap " + HTMLBitmap.toString(), Toast.LENGTH_LONG).show();

       Bitmap bmp = Bitmap.createScaledBitmap(HTMLBitmap, 500, 300, false);

    // the imageView that is being set to the bitmap                
   imageOne.setImageBitmap(bmp);

  private static Bitmap pictureDrawable2Bitmap(Picture picture){
        PictureDrawable pictureDrawable = new PictureDrawable(picture);
        Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawPicture(pictureDrawable.getPicture());
        return bitmap;
    }

编辑:

两种可能的解决方案

1

我刚才想到的一个想法是以某种方式在外部存储器上像SD卡一样创建图像,如果它很大,使用BitmapFactory来放大,在放入内部存储器之前,如何实际做到这一点是另一个问题。最初必须在外部存储器上创建位图。

2

或只是因为将其加载到imageView而导致的内存问题。在这种情况下,我可以在将图像加载到imageView中之前使用BitmapFactory选项删除图像。

1 个答案:

答案 0 :(得分:0)

位图bmp = Bitmap.createScaledBitmap(HTMLBitmap,500,300,false);