`
wiseideal
  • 浏览: 449705 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

android 屏幕截图

阅读更多

Android下截屏 及 格式转换

 (2011-02-17 11:41:43)
标签: 

it

 
(根据王研科先生的探索)
Android G1手机的色深是16bit, 即R/G/B=5/6/6. 故需要一些特殊处理才能获得其屏幕图像。
我们可以adb登录进入Android手机,先dump出/dev/fb0的内容,然后将dump出的文件拷贝到PC(ubuntu)上用convert命令进行处理。

1. 在Android手机上获取framebuffer内容:
   # cat /dev/graphics/fb0 > /mnt/sdcard/fb0

2. 把文件拷贝到PC上的/tmp目录:
   $ adb pull /mnt/sdcard/fb0 /tmp/fb0

3. 从/tmp/fb0文件中取出第一屏的内容(一般会有2到3屏的内容):
    $ dd bs=307200 count=1 if=/tmp/fb0 of=/tmp/screenshot1.xmp
   这里,手机屏幕分辨率是320*480; 颜色深度为16bit (R/G/B=5/6/5),即2字节; 故有
       320*480*2=307200
   或在shell下执行:
       $ echo $((320*480*2))
  这里得到的图像是pixmap格式的.

4. 这时取到的截屏数据要转成每个颜色值为8bit的raw图像数据:
    原理如下:
int main(int argc, char *argv[])
{
    unsigned short in;        // 16bit
    unsigned char out[3];   // 8bit*3
   
    while (read(0, &in, 2) == 2) {
        out[2] = (in & 0x1f) << 3;
        out[1] = ((in >> 5) & 0x3f) << 2;
        out[0] = ((in >> 11) & 0x1f) << 3;
        write(1, out, 3);
    }
    return 0;
}
将以上代码编译成执行文件/tmp/565to88后,再执行:
  $ /tmp/565to888 </tmp/screenshot1.xmp >/tmp/screenshot888.xmp
这将把颜色转化为24bit色深。

5.最后把24bit色深的图像转换成PNG格式:
   $ /usr/bin/convert -depth 8 -size 320x480 rgb:screenshot888.xmp  screenshot.png

现在可以用以下命令查看截屏(screenshot.png文件)啦:
  $ /usr/bin/display  screenshot.png



附: HTC HD7上查看截屏:
手机侧:
  # cat /dev/graphics/fb0 > /mnt/sdcard/fb0
PC侧:
$ dd bs=$((480*800*2)) count=2 if=/tmp/fb0 of=/tmp/screenshot1.xmp
$ /tmp/565to888 </tmp/screenshot1.xmp >/tmp/screenshot888.xmp
$ convert -depth 16 -size 480x800 /tmp/screenshot888.xmp /tmp/screenshot888.png
$ display /tmp/screenshot888.png

分享到:
评论

相关推荐

    android屏幕截图代码

    本文将基于标题“android屏幕截图代码”以及描述中的“用于截图的各种方法 android的各种方法实现”,详细探讨几种实现屏幕截图的方法,并尽可能地扩展相关内容,以便读者能够更好地理解和掌握这些技术点。...

    android 屏幕截图功能

    ### Android屏幕截图功能详解 #### 一、概述 在Android应用开发过程中,有时我们需要实现屏幕截图的功能,例如在社交应用中分享当前界面的画面,或者在游戏应用中保存精彩瞬间等场景。本文将详细介绍如何在Android...

    android屏幕截图

    首先,要理解Android屏幕截图的基本操作。在大多数Android设备上,可以通过同时按下电源键和音量下键来快速截取屏幕当前的状态。这个快捷键组合是多数Android设备的标准设置,但不同厂商可能会有微小差异,例如某些...

    android jni 屏幕截图 NativeScreenCapture

    本项目“android jni 屏幕截图 NativeScreenCapture”专注于利用JNI技术来实现Android设备的屏幕截图功能。下面将详细介绍这个过程涉及的关键知识点。 1. **JNI基础**:JNI是Android平台上的一个接口,它为Java应用...

    Android 屏幕截图

    总的来说,Android屏幕截图可以通过`View`的绘图缓存或者`MediaProjection` API实现,其中后者提供了更全面的截图能力,但需要用户权限。在实际开发中,考虑到兼容性和用户体验,我们需要根据具体场景选择合适的方法...

    Android屏幕截图功能代码

    Android中截取屏幕截图功能代码,在android APP程序中,可以用以上代码截图。

    android屏幕截图发送到PC实现(PC和ANDROID均包含)

    android实现屏幕监控 1、问题 1、性能问题还未解决 2、需要手机拥有ROOT权限。 3、FRAMBUFFER数据读写的需要人为配置(/fb0中数据的... 3、电脑屏幕全屏显示,按android屏幕显示,固定大小显示(代码中修改常量值)

    Android-Andorid屏幕截图类库

    Android-Android屏幕截图类库是为了简化这一过程而设计的,它提供了一种方便、高效的方式来捕获设备屏幕的内容。在这个项目中,我们关注的是RxScreenshotDetector-master,它是一个基于ReactiveX(RxJava)的Android...

    androidjava源码-Android_Screenshot:来自PC的C++android屏幕截图。通过AndroidDDMS源代码将J

    【Android_Screenshot】项目是一个基于C++实现的Android设备屏幕截图工具,它的主要目标是让开发者或用户能够从个人计算机(PC)上直接捕获Android设备的屏幕图像。这个项目利用了Android Debug Bridge (ADB) 和 ...

    Android手机屏幕截图和图片多点触摸缩放

    在Android操作系统中,屏幕截图是...总的来说,Android屏幕截图提供了方便的用户接口和API,而多点触摸缩放则是提升用户体验的关键技术之一。开发者可以通过熟练掌握这些技巧,构建出更具吸引力的图像查看或编辑应用。

    android区域性屏幕截图

    这个“android区域性屏幕截图”项目提供了解决此类需求的代码实现,已经经过测试并确认功能正常。 在Android中,获取屏幕截图通常涉及到以下几个关键知识点: 1. **获取屏幕大小**: 在Android中,我们可以通过`...

    android截取屏幕图片

    通过分析和理解这些代码,你可以更好地掌握Android屏幕截图的功能,并将其应用到自己的应用中。 总之,Android提供了一套相对简单的接口来截取屏幕图片并保存到外部存储。开发者需要理解权限管理的变化,并根据不同...

    Falcon:以Falcons的眼神拍摄Android屏幕截图!

    猎鹰眼捕捉Android屏幕截图! 屏幕快照中包括对话框,祝酒词和所有其他额外的窗口。 用法 // Saving screenshot to file Falcon . takeScreenshot(activity, file); // Take bitmap and do whatever you want ...

    Android 区域截图源码.rar

    在Android平台上,实现区域...通过阅读和理解代码,你将深入掌握Android屏幕截图的实现机制,以及如何在应用中集成自定义的截图功能。这对于开发具有类似需求的应用非常有帮助,比如教育应用、游戏、社交媒体应用等。

    一个用于捕获ios / android屏幕截图并将其保存到剪贴板或文件系统的CLI。-Node.js开发

    一个用于捕获ios / android屏幕截图并将其保存到剪贴板或文件系统的CLI。 Usage用法osnap [ios | android] [-f filename.png] [-d android_device_id]:red_apple:使用iOS osnap io:camera:osnap! 一个用于捕获ios /...

    Android摄像头屏幕截图工具

    在这种情况下,"Android摄像头屏幕截图工具" 提供了一种解决方案,它是一个基于DOS命令的小型应用程序,专为无显示屏Android设备设计。下面将详细介绍这个工具及其相关知识点。 首先,我们需要理解什么是DOS命令。...

    Android 区域截图源码.zip源码资源下载

    在Android平台上,实现区域截图是一项常见的需求,例如用于制作教程、分享特定屏幕内容或...开发者可以通过学习这个源码,了解Android屏幕截图的实现原理,并可将其应用到自己的项目中,增强应用的功能性和用户体验。

    android 指定屏幕内区域截图

    在Android开发中,有时我们需要实现特定功能,例如只截取应用程序界面的一部分,而不是整个屏幕。这个功能在"指定屏幕内区域截图"中得以体现。在本文中,我们将深入探讨如何在Android中实现这一功能,包括如何选取...

    Android MediaProjection截屏&amp;录屏-适配Android

    Android MediaProjection截屏&录屏 1、解决Android Q中java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION 异常 2、...

Global site tag (gtag.js) - Google Analytics