如何将WebView内容转换为图像文件



这是我的代码

btnSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
                createWebPrintJob(webView);
            }else {

                webView.setWebViewClient(new WebViewClient() {

                    @Override
                    public void onPageFinished(WebView view, String url) {
                        Picture picture = view.capturePicture();
                        Bitmap b = Bitmap.createBitmap(
                                picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888);
                        Canvas c = new Canvas(b);
                        picture.draw(c);
                        FileOutputStream fos = null;
                        try {
                            fos = new FileOutputStream( "/sdcard/"  + "page.jpg" );
                            if ( fos != null ) {
                                b.compress(Bitmap.CompressFormat.JPEG, 90, fos );
                                fos.close();
                            }
                        }
                        catch( Exception e ) {
                            System.out.println("-----error--"+e);
                        }
                    }
                });

                Toast.makeText(WebViewActivity.this, "Saved", Toast.LENGTH_SHORT).show();
            }
        }
    });

如果用户sdk> kitkat,则WebView将其视为PDF,如果用户SDK

保存PDF的一部分成功工作,但保存图像不起作用请帮助我我需要此选项。

我在一个项目之一中使用了此代码。这很好。尝试一次。

   webView.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {
                // do your stuff here
                webView.measure(MeasureSpec.makeMeasureSpec(
                        MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED),
                        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
                webView.layout(0, 0, webView.getMeasuredWidth(),
                        webView.getMeasuredHeight());
                webView.setDrawingCacheEnabled(true);
                webView.buildDrawingCache();
                Bitmap bm = Bitmap.createBitmap(webView.getMeasuredWidth(),
                        webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
                Canvas bigcanvas = new Canvas(bm);
                Paint paint = new Paint();
                int iHeight = bm.getHeight();
                bigcanvas.drawBitmap(bm, 0, iHeight, paint);
                webView.draw(bigcanvas);
                System.out.println("WIDTH"
                        + bigcanvas.getWidth());
                System.out.println("HEIGHT="
                        + bigcanvas.getHeight());
                if (bm != null) {
                    try {
                        String path = Environment.getExternalStorageDirectory()
                                .toString();
                        OutputStream fOut = null;
                        File file = new File(path, "/aaaa.png");
                        fOut = new FileOutputStream(file);
                        bm.compress(Bitmap.CompressFormat.PNG, 50, fOut);
                        fOut.flush();
                        fOut.close();
                        bm.recycle();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });

很多时候我曾经这样做。

webView.setDrawingCacheEnabled(true);

在OnPageFined()

Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
imageView.setImageBitmap(bitmap);

希望这会有所帮助...

最新更新