如何保存在webview中显示的图像?

我想将webview中显示的图像保存到本地存储,并且webview应该缓存它显示的图像,如何访问缓存的图像并将它们保存到存储中?


WebView webView = new WebView(this);
//your image is in webview

Picture picture = webView.capturePicture();
Canvas canvas = new Canvas();
picture.draw(canvas);
Bitmap image = Bitmap.createBitmap(picture.getWidth(),
picture.getHeight(),Config.ARGB_8888);
canvas.drawBitmap(mimage, 0, 0, null);
if(image != null) {
    ByteArrayOutputStream mByteArrayOS = new
    ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG, 90, mByteArrayOS);
    try {
        fos = openFileOutput("image.jpg", MODE_WORLD_WRITEABLE);
        fos.write(mByteArrayOS.toByteArray());
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

尝试以上从webView捕获图像


然后,您必须将WebViewClient设置为您的WebView并覆盖shouldOverrideUrlLoading和onLoadResource方法。 让我举个简单的例子:

WebView yourWebView; // initialize it as always...
// this is the funny part:
yourWebView.setWebViewClient(yourWebClient);

// somewhere on your code...
WebViewClient yourWebClient = new WebViewClient(){
    // you tell the webclient you want to catch when a url is about to load
    @Override
    public boolean shouldOverrideUrlLoading(WebView  view, String  url){
        return true;
    }
    // here you execute an action when the URL you want is about to load
    @Override
    public void onLoadResource(WebView  view, String  url){
        if( url.equals("http://cnn.com") ){
            // do whatever you want
           //download the image from url and save it whereever you want
        }
    }
}

我曾使用过上面的代码,它“工作”,但它只产生黑色图像,所以在几个小时后这里是我的更正,现在它写在外部SD卡上,没有贬低风险或路径问题......

public void captureWV() {
    Picture picture = webview.capturePicture();
    Bitmap image = Bitmap.createBitmap(picture.getWidth(),picture.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(image);
    picture.draw(canvas);
    if (image != null) {
        ByteArrayOutputStream mByteArrayOS = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 90, mByteArrayOS);
        try {
            File sdCard = Environment.getExternalStorageDirectory();
            File dir = new File(sdCard.getAbsolutePath());
            File file = new File(dir, "filename.jpg");
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(mByteArrayOS.toByteArray());
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这也是我主要活动的开始

public class MainActivity extends Activity {
private static final String URL = "http://punto.gt"; //your website
WebView webview;
// your code here
}
链接地址: http://www.djcxy.com/p/10657.html

上一篇: how to save images displayed in webview?

下一篇: More succinct way to use shims in variadic templates?