2012-04-15 15 views

Respuesta

2
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(); 
    } 
} 

probar lo anterior para capturar la imagen de la web View

+2

el código de publicar sólo se utiliza para obtener la pantalla de vista web? –

+0

Quiero guardar todas las imágenes webview muestra –

+1

¿Por qué aceptar la respuesta si no es lo que pidió? –

1

Entonces usted tiene que fijar un WebViewClient a su WebView y anular shouldOverrideUrlLoading y onLoadResource métodos. Déjeme darle un ejemplo sencillo:

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

lo hice utiliza el código de arriba y que "trabajaban" pero estaba produciendo imágenes en negro solamente así que después de un par de horas aquí están mis correcciones, ahora se escribe en el tarjeta SD externa sin riesgos de obsolescencia o problemas de trayectoria ...

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

también aquí es el comienzo de mi MainActivity

public class MainActivity extends Activity { 
private static final String URL = "http://punto.gt"; //your website 
WebView webview; 
// your code here 
} 
+0

La captura de pantalla siempre es negra. :( –

Cuestiones relacionadas