现应用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();
}
}
}
});
可是使用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();
}
}
}
});
//之前开发游戏项目 须要考虑都自适应屏幕 后来我就写了一个这样的方法 可以创建指定宽高的图片,希望可以帮到楼主。 /**
* 创建一个缩小或放大的新图片
*
* @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;
}
view.getDrawingCache();
截取当前屏幕上显示的区域
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
将width和height设置为你想要的不就得了
比如
Bitmap bmp = Bitmap.createBitmap(400, 200, Bitmap.Config.ARGB_8888);
view.getDrawingCache();这个方法获取的是整个WebView的截图(内容较少的话)。如果内容较多,则图片无法生成。
请求指教。