【发布时间】:2013-12-09 18:44:30
【问题描述】:
我正在将 html 数据加载到 webview 中,之后我需要捕获 webview 数据并将该图像存储到 sd 卡中。它适用于小图像,但它会为大图像提供内存不足异常。我正在使用以下逻辑来执行此操作。
private void generateImg() {
// TODO Auto-generated method stub
try{
Picture p = webview.capturePicture();
Bitmap bitmap=pictureDrawable2Bitmap(p);
String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString();
File myDir = new File(root + "/Aack");
if(myDir.exists())
{
//Log.e("Directory","Existed");
}
else
{
myDir.mkdir();
}
String fname = System.currentTimeMillis()+".png";
//Log.e("file name...",""+fname);
file = new File (myDir, fname);
try
{
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
file_name=myDir+"/"+fname;
}catch(Exception e)
{
e.printStackTrace();
}
}
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;
}
所以,请指导我如何处理这个问题。谢谢
【问题讨论】:
-
我想知道小图和大图是什么意思,是加载到webView还是抓图?
-
在哪一行抛出异常?
-
位图位图 = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888); @Bharat Sharma
-
同时捕捉大图像。 @vinayKumar
-
在保存或创建缩放位图之前尝试解码图像
标签: android memory webview bitmap