最近项目中要有代码自动截屏的功能,而且需要截屏之后使用代码剪切一下图片的功能并且上传到服务器端,话不多说先直接上代码,然后再根据代码分析一下呗。
private void GetandSaveCurrentImage() {
//1.获取屏幕分辨率
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int widthPixels = dm.widthPixels;
int heightPixels = dm.heightPixels;
float density = dm.density;
System.out.println("======widthPixels========" + widthPixels);
System.out.println("======heightPixels========" + heightPixels);
System.out.println("======density========" + density);
int w = (int) (widthPixels * density);
int h = (int) (heightPixels * density);
System.out.println("======w========" + w);
System.out.println("======h========" + h);
Bitmap bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
int toppx = (int) (65 * density);
System.out.println("====toppx=========" + toppx);
int bottonpx = (int) (60 * density);
System.out.println("=====bottonpx========" + bottonpx);
// 2.获取屏幕
View decorview = getWindow().getDecorView();
decorview.setDrawingCacheEnabled(true);
bmp = decorview.getDrawingCache();
int width = bmp.getWidth();
int height = bmp.getHeight();
System.out.println("======width=======" + width);
System.out.println("========height====" + height);
Bitmap btp = Bitmap.createBitmap(bmp, 0, toppx, widthPixels,
heightPixels - toppx - bottonpx);
String SavePath = "sdcard/test/";
// 3.保存Bitmap
try {
File path = new File(SavePath);
// 文件
String filepath = SavePath + "/screen.png";
File file = new File(filepath);
if (!path.exists()) {
path.mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = null;
fos = new FileOutputStream(file);
if (null != fos) {
btp.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
第一步:需要获取到手机屏幕的分辨率,以供截屏之后截取图片时使用;
第二步:当然就是使用代码进行手机截屏,代码如下:
<span style="white-space:pre"> </span>View decorview = getWindow().getDecorView();
decorview.setDrawingCacheEnabled(true);
bmp = decorview.getDrawingCache();
第三步:将截取好的图片保存到sdcard中指定文件夹中,以供上传到服务器(上传图片的功能在这就不写了)。
以下是效果图: