从安卓Webview中捕获图片

5

我想要保存从WebView的capturePicture方法获取到的图片,应该如何操作?

1个回答

14
web = new WebView(this);

web.setPictureListener(new PictureListener(){

    public void onNewPicture(WebView view, Picture picture) {
      if(picture != null)
      {
       try
       {
        Bitmap bmp = pictureDrawable2Bitmap(new PictureDrawable(picture)); 
        FileOutputStream out = new FileOutputStream(filename);
        bmp.compress(Bitmap.CompressFormat.PNG, 90, out); 
        out.close();
        }
        catch(Exception e)
        {
           e.printStackTrace();
        }
      }
});

web.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView webview, String url) {
        Picture picture = webview.capturePicture();

    }
});


web.getSettings().setJavaScriptEnabled(true);

setContentView(web);

辅助函数

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

免责声明:我实际上没有编译过这个代码,但应该能正常运行


1
@Reno 谢谢你的回答,但在棒棒糖版本中它不起作用。你能更新一下答案吗? - user512

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接