[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
把 Android FrameBuffer 裸数据转成图片
Wu Zhangjin 创作于 2014/07/02
- 问题描述
在 Android 手机上,假设屏幕正亮着并且显示了一个很好的画面,如果想把这个画面保存下来,该怎么办?
- 问题分析
正常情况下是截图,用 screenshot
或者 screencap
命令,但是如果系统里头连这两个命令都没有或者不支持,该怎么办?比如在老版本的
Android 上或者在还没移植好 Android 只有 Linux 内核加 Busybox 文件系统的情况下?
- 解决方案
可以类似那两个数据,先把 FrameBuffer 里头的数据拷贝出来,然后转换为某种特定类型的格式。最简单地,可以转换为 BMP,因为 Framebuffer 本身就是 BMP 图片的裸数据(raw data),只需要加上 BMP 的图片头就行,但是手动添加肯定不行,那咱们用工具:ffmpeg。
假设屏幕分辨率为 1280 * 800,FB每个像素的组织方式为 RGB32,那么可以:
$ sudo apt-get install ffmpeg
$ adb shell cat /dev/graphics/fb0 > fb0.raw
$ ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 1280x800 -i fb0.raw -f image2 -vcodec bmp img-%d.bmp
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |