美文网首页
关于屏幕截图的一些事儿

关于屏幕截图的一些事儿

作者: 宁静世界 | 来源:发表于2017-03-20 12:56 被阅读0次

实现截图并上传到服务器

Paste_Image.png

截图

private static Bitmap takeScreenShot(Activity activity) {
    // View是你需要截图的View
    View view = activity.getWindow().getDecorView();
    view.setDrawingCacheEnabled(true);
    view.buildDrawingCache();
    Bitmap b1 = null;
    try {
        b1 = view.getDrawingCache();
    } catch (OutOfMemoryError e) {
        // TODO: handle exception
    }
    // 获取状态栏高度
    Rect frame = new Rect();
    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
    int statusBarHeight = frame.top;
    System.out.println(statusBarHeight);
    // 获取屏幕长和高
    int width = activity.getWindowManager().getDefaultDisplay().getWidth();
    int height = activity.getWindowManager().getDefaultDisplay().getHeight();
    // 去掉标题栏
    // Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
    Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);
    view.destroyDrawingCache();
    return b;
}

序列化到本地

public void saveBitmapFile(Bitmap bitmap) {
    Log.e(TAG, "保存图片");
    file = new File("/sdcard/DCIM/Screenshots/", "bg");
    try {
        FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.flush();
        out.close();
        Log.i(TAG, "已经保存");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

图片上传

    //上传图片
    private void updataImage(final String imageurl) {
        String token = SpUtils.getString(this, "TOKEN");
        String userid = SpUtils.getString(this, "USERID");
        MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
        OkHttpClient mOkHttpClient = new OkHttpClient();
        File file = new File(imageurl);
        builder.addFormDataPart("request", file.getName(), RequestBody.create(MediaType.parse("image/png"), file));
        //这几个是参数
        builder.addFormDataPart("token", userid);
        builder.addFormDataPart("userid", token);
        MultipartBody requestBody = builder.build();
        final Request request = new Request.Builder()
                .url(Define.Server + "uploadImgs.action")
                .post(requestBody)
                .build();
        mOkHttpClient.newCall(request).enqueue(new Callback() {

            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure: " + e.toString());
                ToastUtil.showShort(PartTimeJobDetailsActivity.this, "图片上传失败");
                return;
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String json = response.body().string();
                Log.d(TAG, "onResponse: " + json);
                ToastUtil.showShort(PartTimeJobDetailsActivity.this, "图片上传成功");
                Log.i("LOGIN", json);
                Gson gson = new Gson();
                ResultBean result = gson.fromJson(json, ResultBean.class);
                if (result == null) {
                    return;
                }
                if (result.isSucceed()) {
                    Type objectType = new TypeToken<ResultBean<List<String>>>() {
                    }.getType();
                    ResultBean<List<String>> updataImageBean = gson.fromJson(json, objectType);
                    List<String> data = updataImageBean.getData();
                    shareIMG = Define.ImageServer + data.get(0);
                    share();
                } else {
                    //showShortToast("图片上传失败", 3);
                    return;
                }
            }
        });
    }

相关文章

  • 关于屏幕截图的一些事儿

    实现截图并上传到服务器 截图 序列化到本地 图片上传

  • 关于iOS屏幕截图的坑

    最近在处理一个屏幕截图的crash的时候,遇到一些问题,看了很多关于屏幕截图的方法,这里结合crash说下屏幕截图...

  • Andorid截图

    前言 最近项目里有用到截图,总结一些用法。 截图 获取View在屏幕可见区域的截图 webview截图 webvi...

  • Android屏幕截图,View截图(干货)

    不多说废话,直接上代码 屏幕截图,亲测可用,基于Activity View截图,亲测可用参考 关于View截图,如...

  • 屏幕截图

  • 屏幕截图

    方法1 save_screenshot() #该方法直接保存当前屏幕截图到当前脚本所在文件位置。 driver.s...

  • 屏幕截图

    Activity界面区域划分 如图:最大的红色区域是屏幕界面,绿色次大区域我们称之为“应用界面区域”,蓝色的区域我...

  • 屏幕截图

    有时候需要截取屏幕上的某一块内容,比如捕鱼达人游戏// 核心代码// 调用某个view的layer的renderI...

  • 屏幕截图

  • 屏幕截图

    游戏中可使用如下代码进行截屏

网友评论

      本文标题:关于屏幕截图的一些事儿

      本文链接:https://www.haomeiwen.com/subject/wmwbnttx.html