设备需要ROOT,利用Socket读取screencap向标准输出里输出的图像数据获取图片,图片格式为png。

import java.io.BufferedInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import android.util.Log;

/**

* 截图工具类

* @author Jzhung

* @date 2016-7-13 17:25:18

*/

public class ScreenCaptureUtil {

private static ScreenCaptureUtil instance;

private byte[] tempBuffer;

private StringBuilder buffer;

private ScreenCaptureUtil(){

}

public static ScreenCaptureUtil getInstance(){

if(instance == null){

instance = new ScreenCaptureUtil();

instance.tempBuffer = new byte[100 * 1024];

instance.buffer = new StringBuilder(100 * 1024);

}

return instance;

}

/**

* 调用系统截图工具获取屏幕截图字节数组,格式为png,注意这是一个耗时操作,约为1-5秒。

* 如果屏幕分辨率过高,防止内存溢出,可以考虑直接保存到文件的命令u -c /system/bin/screencap -p /sdcard/screenshot.png

* @return png格式图片的字节数组

*/

public byte[] getScreenCapBytes(){

//LogUtils.i("获取屏幕图片bytes");

try {

Process exec = Runtime.getRuntime().exec("su -c /system/bin/screencap -p");

try {

final InputStream inputStream = exec.getInputStream();

BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

//清空缓存内容

buffer.setLength(0);

int count;

long start = System.currentTimeMillis();

while ((count = bufferedInputStream.read(tempBuffer)) > 0) {

//Log.e("test", "count = " + count);

buffer.append(new String(tempBuffer, 0, count, "ISO-8859-1"));

}

Log.v("test", "获取截屏耗时:" +(System.currentTimeMillis() - start) + "ms png图片大小: " + buffer.length());

bufferedInputStream.close();

//Log.e("test", "result: " + buffer.toString());

//exec.getOutputStream().close();

final int retCode = exec.waitFor();

exec.destroy();

//Log.e("test", "retCode: " + retCode);

} catch (final IOException | InterruptedException e) {

e.printStackTrace();

}

} catch (IOException e) {

e.printStackTrace();

}

try {

tempBuffer = buffer.toString().getBytes("ISO-8859-1");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return tempBuffer;

}

}

android 读取图片字节流,Android屏幕截图直接读取screencap流来实现相关推荐

  1. android获取图片缩略图,Android系获取图片和视频的缩略图

    获取手机里视频缩略图: public static Bitmap getVideoThumbnail(ContentResolver cr,Uri uri) { Bitmap bitmap = nul ...

  2. cv2 和 matplotlib.pyplot 和 PIL.Image 读取图片方式对比【Python读取图片】

    文章目录 import matplotlib.pyplot as plt 和 cv2 读取图像对比 PIL 和 cv2 读取图片对比 mxnet.image.imread 读取图片 PIL 和 tor ...

  3. 从oracle中读取图片,从oracle数据库中读取图片,在jsp?

    servlet:(jsp调用servlet显示图片,servlet如下) public void doGet(HttpServletRequest request, HttpServletRespon ...

  4. android自定义图片文本,Android 实现文字与图片的混排

    在我们的项目中,常常会碰到图片与文字混排的问题.解决这类问题的方法有非常多,本文给出的方法不是唯一的.仅仅有依据实际场景才干找到更适合的方法. 本文主要通过xml布局来实现图片与文字的混排(水平排列) ...

  5. android的图片缩放,Android图片缩放总结及比较

    在Android中对大图片进行缩放真的很不尽如人意,不知道是不是我的方法不对.下面我列出3种对图片缩放的方法,并给出相应速度.请高人指教. 第一种是BitmapFactory和BitmapFactor ...

  6. android多图片拖动,Android实现图片拖动效果

    要求: 1.通过手指移动来拖动图片 2.控制图片不能超出屏幕显示区域 技术点: 1.MotionEvent处理 2.对View进行动态定位(layout) activity_main.xml: xml ...

  7. android开机图片格式,Android平台启动图使用.9.png图片

    概述 目前HBuilder|HBuilderX中仅定义几种标准分辨率的启动图配置,而实际上存在很多不同分辨率的手机,导致启动图会进行拉伸或压缩引起变形,Android平台为了解决此问题就出现了可以适配 ...

  8. 【tensorflow 读取图片方式】本地文件名读取以及url方式读取

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 图片存在形式,一般 ...

  9. android 自定义图片裁剪,android 自定义比例裁剪图片(拍照 相册)方式 自定义比例...

    先说下我这个有啥好处 主要是能够自定义设置裁剪图片的比例.比如 :今天产品 给你说裁剪 成16:9 的图片. 你做好了 OK 明天 产品又和你说 裁剪成10:7 的图片 ,你是不是要吐血, 我这里只要 ...

  10. android 自定义图片裁剪,Android图片裁剪工具封装

    笔者从零开始开发Android,而且是跳过java直接使用kotlin开发,这其中的好处是可以避开java这门传统语言诸多的潜规则,难处是相比资深Android开发者少了许多可以现用的工具库.比如An ...

最新文章

  1. j函数 判断以 什么开头
  2. 区块链学堂(4):以太坊基本概念及工具Geth、Browser-solidity、Mist
  3. 五款常用邮件管理系统评测
  4. 如何干净的删除vm_如何在macOS 10.15 Catalina绕过XProtect?
  5. 金陵科技学院计算机系男女比,眼已亮瞎:719所全国高校男女比例排名
  6. iphone个人热点无法开启_iPhone无法开启个人热点怎么回事【解决方法】
  7. 数据挖掘与数据分析好书推荐
  8. saltstack高效运维
  9. LAMMPS生成粗糙表面的in文件脚本(可调节微结构高、长和宽)
  10. 计算机学硕比专硕累吗,2019计算机考研常识:学硕与专硕对比
  11. Mach-O入门理解
  12. U盘重装系统-非常简单制作方法
  13. 深耕5G云专网,阿里云祝顺民入选“2022年度5G创新人物”
  14. html5中background什么意思,background
  15. 二自由度车辆动力学微分方程详细推导过程
  16. win10连接网络共享打印机出现709错误解决方法
  17. Opencv-Python中文指南专栏开篇
  18. Hisilicon Hi3536RBCV100 编解码处理器
  19. Socket网络编程tcp聊天案例(心跳包,多线程,断线重连机制)
  20. ChatGPT被玩坏了

热门文章

  1. 计算机网络自顶向下第七版第二章课后答案,《计算机网络·自顶向下方法》第七版 第二章 课后习题与问题 答案...
  2. 动手实验:使用 jstat 摸清线上系统的JVM运行状况
  3. Linux安装dos环境,Ubuntu安装dos2unix工具
  4. 【算法竞赛学习笔记】弦图和区间图
  5. 如何用python做无限弹窗_Python无限弹窗,开机启动,打包为exe程序
  6. echarts图表联动案例
  7. 北邮计算机通信原理答案,北邮通信原理习题答案第四章 模拟通信系统
  8. easychm生成帮助文件时出现的目录导航乱码问题
  9. python微信聊天机器人_Python搭建一个微信聊天机器人
  10. 一篇文章教会你需求分析文档怎么写