我使用以下代码获取在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;
}
编辑:
两种可能的解决方案
或只是因为将其加载到imageView而导致的内存问题。在这种情况下,我可以在将图像加载到imageView中之前使用BitmapFactory选项删除图像。
答案 0 :(得分:0)
位图bmp = Bitmap.createScaledBitmap(HTMLBitmap,500,300,false);