Linux下截屏程序

转载 2012年03月24日 14:14:59
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>


static unsigned char sg_BHeader[] = {
    0x42, 0x4D, 0x36, 0x58, 0x02, 0x00, 0x00, 0x00,  0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 
    0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xF0, 0x00,  0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#define RGB565TO1555(rgb) ((unsigned short)((unsigned short)(rgb & 0x001f) | ((unsigned short)(rgb & 0xffe0) >> 1)))


void SaveBMPFile(unsigned char *raw, char *filename)
{
    unsigned short *p = (unsigned short *)raw;
    typedef unsigned int UINT;
    typedef unsigned char UCHAR;
    UINT m_Width = 640, m_Height = 480;
    UINT i, j;
    int bmp = open(filename, O_WRONLY | O_CREAT);
    if(bmp < 0)
        return;
    sg_BHeader[0x02] = (UCHAR)(m_Width * m_Height * 2 + 0x36) & 0xff;
    sg_BHeader[0x03] = (UCHAR)((m_Width * m_Height * 2 + 0x36) >> 8) & 0xff;
    sg_BHeader[0x04] = (UCHAR)((m_Width * m_Height * 2 + 0x36) >> 16) & 0xff;
    sg_BHeader[0x05] = (UCHAR)((m_Width * m_Height * 2 + 0x36) >> 24) & 0xff;
    sg_BHeader[0x12] = (UCHAR)m_Width & 0xff;
    sg_BHeader[0x13] = (UCHAR)(m_Width >> 8) & 0xff;
    sg_BHeader[0x14] = (UCHAR)(m_Width >> 16) & 0xff;
    sg_BHeader[0x15] = (UCHAR)(m_Width >> 24) & 0xff;
    sg_BHeader[0x16] = (UCHAR)m_Height & 0xff;
    sg_BHeader[0x17] = (UCHAR)(m_Height >> 8) & 0xff;
    sg_BHeader[0x18] = (UCHAR)(m_Height >> 16) & 0xff;
    sg_BHeader[0x19] = (UCHAR)(m_Height >> 24) & 0xff;
    write(bmp, sg_BHeader, sizeof(sg_BHeader));
    for(i = 0; i < m_Height; i++)
    {
        unsigned short *c = p + (m_Height - 1 - i) * m_Width;
        unsigned short cc;
        for(j = 0; j < m_Width; j++)
        {
            cc = RGB565TO1555(*(c + j));
/*            cc = *(c + j);*/
            write(bmp, &cc, 2);
        }
    }
    close(bmp);
}


int main(int argc, char *argv[])
{
    unsigned char buf[640*480*2];
    char *filename = "/mnt/yaffs/screenshot.bmp";
    int fb;
    fb = open("/dev/fb/0", O_RDONLY);
    if(fb < 0)
        exit(1);
    if(argc == 2)
        filename = argv[1];
    printf("reading screen...\n");
    read(fb, buf, 640*480*2);
    close(fb);
    printf("saving screen...\n");
    SaveBMPFile(buf, filename);
    printf("file %s created successfully\n", filename);
    exit(0);
}
 

android之手机截屏小程序

Android 手机截屏程序 一:程序运行的大致思路 1、运行程序,显示一个Activity界面,点击按钮,显示一个浮窗。这里用到一个显示浮窗的小技术。 2、在显示浮窗的同时,会启动一个serv...
  • wanlong2713
  • wanlong2713
  • 2015年03月03日 17:49
  • 1380

Linux下给力截图工具归纳

1、系统自带 screenshot 转载自:http://blog.csdn.net/qtldr/article/details/6563300 (1)命令行方式 如果linux安装了gnome,...
  • oZuiJiaoWeiYang
  • oZuiJiaoWeiYang
  • 2015年04月01日 11:46
  • 12194

【小程序】实时截屏上传到服务器

这几天跟个咸鱼似的。天气太热了,什么事情都不想干。 继续以前的思路写了个winform后台实时截屏de小程序,这次的小改进是,可以将图片上传到自己服务器上 就相当于可以实时监控别人电脑de画面情况...
  • qq_32688731
  • qq_32688731
  • 2017年07月25日 11:09
  • 689

截屏事件监听实现

现在很多app都有监听截屏的功能,可以提示用户分享或者发送截屏图片,进一步提升app的用户体验。例如,微信在截屏后,点击输入框+号,会提示发送刚才的截屏图片,非常方便实用。其实,微信不光对截屏的图片进...
  • jay_skye
  • jay_skye
  • 2016年07月03日 13:14
  • 1240

最简单的截屏程序

通过java实现的 可以设置截取的高宽,直接保存到磁盘上。 原创不易,转载请注明出处: package com.zuidaima.capture; import java.awt.AWTExc...
  • yaerfeng
  • yaerfeng
  • 2014年02月24日 10:01
  • 1740

截屏小程序完成了

    写这个东西也是源起于计划中的木马程序,需要这样的功能。   虽然是个很简单的程序,不过真动手写起来,还是有很多意想不到的问题。   CreateDirectory是第一个让我吃苦头的函数,它不...
  • Nsun
  • Nsun
  • 2004年10月25日 16:10
  • 1575

截图小程序

下面是个简单的截图小程序,没有写GUI,只写了个简答的截图屏幕的代码部分。 import java.awt.Dimension; import java.awt.Rectangle; import ...
  • zfqzpp
  • zfqzpp
  • 2013年11月18日 21:00
  • 1600

[每天一个Linux小技巧] Linux下 截图

Ctrl + Shift + C
  • robertsong2004
  • robertsong2004
  • 2014年07月15日 15:59
  • 1679

Win32 SDK 编写截图小工具

开发环境为windows xp,vc6 主要方案为,创建一个主窗口,不进行截图的时候将其隐藏,并在托盘区创建小图标,截图时使窗口全屏透明,捕捉鼠标行为截图保存,再使窗口隐藏。 以下根据主要步骤将核...
  • silyvin
  • silyvin
  • 2012年05月07日 09:56
  • 3084

Linux Framebuffer 截屏方法

Linux 在嵌入式系统中,若不支持键盘的情况可以用以下方法进行截屏操作: 一般Linux的framebuffer 对应/dev/fb0这个字符设备文件,输入命令: cat /dev/fb0 > ...
  • qq_29729577
  • qq_29729577
  • 2016年09月03日 10:47
  • 988
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下截屏程序
举报原因:
原因补充:

(最多只允许输入30个字)