android - 从android webview捕获图片

标签 android

我想在 WebView 中保存通过 capturePicture 方法获取的图片,怎么办?

最佳答案

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;
    }

免责声明:我实际上并没有编译这个,不过它应该可以工作

关于android - 从android webview捕获图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7702565/

相关文章:

java - 如何使用Factual API Android驱动程序?

android - 无法启动模拟器。原因 : Emulator exited before boot en React Native when react-native run-android

java - 如何在 Android 上预分配最大堆空间

android - 如何在Android中从一个接口(interface)传递给其他接口(interface)

android - 如果未连接到 Internet,则要求用户在启动 Android 应用程序时启动 WiFi 或 3G

java - 从 PHP 文件接收 HTTP POST 回显响应(发送 POSTS 工作正常,这是我无法弄清楚的接收)

android - 可以隐藏水平样式的进度文本,不确定的 ProgressDialog?

android - Flutter release app native crash, abort error [FATAL :flutter/shell/platform/android/library_loader. cc(24)] 检查失败:结果

android - 如何将线程保存到 SharedPreference Android

android - 仅针对文件接收 FileObserver CREATE 或 DELETE