现应用webview编了个小程序,准备截取网页图片
可是使用Picture pic = webView.capturePicture();  每次截取的图片是整个网页的,而我希望截取的是屏幕显示的区域,请问如何调整截取区域的大小呢?
cutButton.setOnClickListener(new View.OnClickListener() 
{
@Override
public void onClick(View v)
{
Picture pic = webView.capturePicture();

int width = pic.getWidth();
int height = pic.getHeight();
if(width > 0 && height > 0)
{
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
pic.draw(canvas);
try
{
String fileName = "sdcard/" + System.currentTimeMillis() + ".png";
FileOutputStream fos = new FileOutputStream(fileName);
if(fos != null)
{
bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
}
Toast.makeText(getApplicationContext(), "截图成功,文件名是:" + fileName, Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
});

解决方案 »

  1.   


    //之前开发游戏项目 须要考虑都自适应屏幕 后来我就写了一个这样的方法 可以创建指定宽高的图片,希望可以帮到楼主。 /**
     * 创建一个缩小或放大的新图片
     * 
     * @param resources
     * @param resourcesID
     * @param scr_width
     * @param res_height
     * @return
     */
    private Bitmap CreatMatrixBitmap(Bitmap bitMap, float scr_width, float res_height) {

    int bitWidth = bitMap.getWidth();
    int bitHeight = bitMap.getHeight();
    float scaleWidth = scr_width / (float) bitWidth;
    float scaleHeight = res_height / (float) bitHeight;
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    bitMap = Bitmap.createBitmap(bitMap, 0, 0, bitWidth, bitHeight, matrix, true);
    return bitMap;
    }
      

  2.   

    WebView的方法capturePicture()本身就是copy当前显示的Content,然后用getWidth、getHeight方法来获取宽度、高度,再createBitmap就存在错误获取当前view的起始位置,宽度、高度应该是当前手机的宽度和高度才对~~
      

  3.   

    view.setDrawingCacheEnabled(true);
    view.getDrawingCache();
    截取当前屏幕上显示的区域
      

  4.   

    这很简单啊..
    Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    将width和height设置为你想要的不就得了
    比如
    Bitmap bmp = Bitmap.createBitmap(400, 200, Bitmap.Config.ARGB_8888);
      

  5.   

    view.setDrawingCacheEnabled(true);
    view.getDrawingCache();这个方法获取的是整个WebView的截图(内容较少的话)。如果内容较多,则图片无法生成。
      

  6.   

    如果去掉外层的监听事件,让程序运行后直接截取WebView中的内容,为什么会报错显示为:获得width,height都是0.
    请求指教。
      

  7.   

    webview 内容很多,截取后有5000像素,图片非常模糊,一个字都看不清,咋办?