当前位置: 首页 > news >正文

营销型单页网站黑龙江省建设工程网

营销型单页网站,黑龙江省建设工程网,云虚拟主机做视频网站,浏览广告赚钱一天100元From: http://blog.chinaunix.net/uid-24789420-id-3191806.html 一、概述 最近看到网上有人问怎么用C语言实现屏幕截图#xff0c;刚好自己也在研究Linux驱动#xff0c;于是花了半天时间把Linux的FrameBuffer驱动看懂了个七八#xff0c;接着就动手写了个LCD屏幕截图的应…From: http://blog.chinaunix.net/uid-24789420-id-3191806.html 一、概述 最近看到网上有人问怎么用C语言实现屏幕截图刚好自己也在研究Linux驱动于是花了半天时间把Linux的FrameBuffer驱动看懂了个七八接着就动手写了个LCD屏幕截图的应用程序。 一些说明 1. 板子LCD的分辨率为480x272像素格式为RGB565。 2. 程序首先获取LCD的一些参数 然后将获取到的一帧数据转换为RGB24格式最后用jpeglib库压缩为jpg格式的图片。 3. 在嵌入式Linux的板子上测试通过。 二、实现 程序中有注释不多说直接上程序 #include stdio.h #include stdlib.h #include sys/ioctl.h #include unistd.h #include fcntl.h #include malloc.h #include linux/fb.h #include jpeglib.h #include jerror.h/*RGB565转RGB24函数*rgb565: 指向存放rgb565数据的起始地址*rgb24指向存放rgb24数据的起始地址*width屏幕(分辨率)的宽度*height屏幕(分辨率)的高度*/ int RGB565_to_RGB24(unsigned char *rgb565, unsigned char *rgb24, int width, int height) {int i;int whole width*height;unsigned char r, g, b;unsigned short int *pix565;pix565 (unsigned short int *)rgb565;for(i 0;i whole;i){ r ((*pix565)11)0x1f;*rgb24 (r3) | (r2);rgb24;g ((*pix565)5)0x3f;*rgb24 (g2) | (g4);rgb24;b (*pix565)0x1f;*rgb24 (b3) | (b2);rgb24;pix565; }return 1; }/*jpeg压缩函数*rgb指向存放rgb24数据的起始地址*width屏幕(分辨率)的宽度*height屏幕(分辨率)的高度 */ int jpeg_compress(unsigned char *rgb, int width, int height) {struct jpeg_compress_struct cinfo;struct jpeg_error_mgr jerr;FILE * outfile;JSAMPROW row_pointer[1];int row_stride;cinfo.err jpeg_std_error(jerr);jpeg_create_compress(cinfo);// 输出文件名为out.jpgif ((outfile fopen(out.jpg, wb)) NULL){printf(can not open out.jpg\n);return -1;}jpeg_stdio_dest(cinfo, outfile);cinfo.image_width width;cinfo.image_height height;cinfo.input_components 3; // 1-灰度图3-彩色图// 输入数据格式为RGBcinfo.in_color_space JCS_RGB; // JCS_GRAYSCALE-灰度图JCS_RGB-彩色图jpeg_set_defaults(cinfo);jpeg_set_quality(cinfo, 80, TRUE); // 设置压缩质量80jpeg_start_compress(cinfo, TRUE); // 开始压缩过程row_stride width * 3; // row_stride: 每一行的字节数while (cinfo.next_scanline cinfo.image_height){row_pointer[0] rgb[cinfo.next_scanline * row_stride];(void) jpeg_write_scanlines(cinfo, row_pointer, 1);}jpeg_finish_compress(cinfo); // 完成压缩过程fclose(outfile);jpeg_destroy_compress(cinfo); // 释放资源return 1; }int main() {int fd;struct fb_var_screeninfo fb_var_info;struct fb_fix_screeninfo fb_fix_info;unsigned char *trgb;unsigned char *rgb;int buffer_size;// 打开framebuffer设备fd open(/dev/fb0, O_RDONLY);if(fd 0){printf(can not open dev\n);exit(1);}// 获取LCD的可变参数ioctl(fd, FBIOGET_VSCREENINFO, fb_var_info);// 一个像素多少位 printf(bits_per_pixel: %d\n, fb_var_info.bits_per_pixel);// x分辨率printf(xres: %d\n, fb_var_info.xres);// y分辨率printf(yres: %d\n, fb_var_info.yres);// r分量长度(bit)printf(red_length: %d\n, fb_var_info.red.length);// g分量长度(bit)printf(green_length: %d\n, fb_var_info.green.length);// b分量长度(bit)printf(blue_length: %d\n, fb_var_info.blue.length);// t(透明度)分量长度(bit)printf(transp_length: %d\n, fb_var_info.transp.length);// r分量偏移printf(red_offset: %d\n, fb_var_info.red.offset);// g分量偏移printf(green_offset: %d\n, fb_var_info.green.offset);// b分量偏移printf(blue_offset: %d\n, fb_var_info.blue.offset);// t分量偏移printf(transp_offset: %d\n, fb_var_info.transp.offset);// 获取LCD的固定参数ioctl(fd, FBIOGET_FSCREENINFO, fb_fix_info);// 一帧大小printf(smem_len: %d\n, fb_fix_info.smem_len);// 一行大小printf(line_length: %d\n, fb_fix_info.line_length);// 一帧大小buffer_size (fb_var_info.xres * fb_var_info.yres * fb_var_info.bits_per_pixel / 8);trgb (unsigned char *)malloc(buffer_size);if(trgb NULL)exit(0);rgb (unsigned char *)malloc(fb_var_info.xres * fb_var_info.yres * 3);if(rgb NULL){goto here;}if(read(fd, trgb, buffer_size) 0) // 获取一帧数据{printf(read failed!\n);goto read_fail;}// 格式转换RGB565_to_RGB24(trgb, rgb, fb_var_info.xres, fb_var_info.yres);// jpeg压缩if(jpeg_compress(rgb, fb_var_info.xres, fb_var_info.yres) 0)printf(compress failed!\n); read_fail:free(rgb); here:free(trgb);close(fd);return 0; }注意编译时加上 -ljpeg
http://www.sadfv.cn/news/169858/

相关文章:

  • 国内设计师交流网站上海松江水处理网站建设
  • 西安品牌网站建设服务商建设网站基础知识
  • 织梦 网站源码重庆网站建设重庆
  • 模板网站和定制网站影响排名html个人网站完整代码
  • 百度为什么会k网站线上推广话术
  • 加强单位门户网站建设的通知docker wordpress 修改端口
  • 网站开发怎么销售百度关键词指数
  • 男女做暧昧视频网站成都中职学校网站建设推广
  • idea做百度网站谷歌浏览器下载手机版官网中文
  • 做招聘网站的背景图片php源码
  • 教你做吃的网站外贸推广公司
  • 服务器网站目录会网站建设好吗
  • 为什么做的网站要续费河南省建设信息网查询
  • 建网站的小软件网站开发与设计实训心得一千字
  • 深圳建设高端网站商事主体信息查询平台
  • 建站公司最喜欢的网站图文广告制作软件
  • hp网站wordpress去除谷歌字体
  • 平台建设网站公司胡芦娃app软件下载网站
  • 东莞建筑建设网站建设网页类界面图片
  • 织梦网站广告代码教程网络挣钱
  • 安徽休宁建设厅网站二手车的网站建设例子
  • 企业内部信息网站如何建设网架公司名字推荐大全
  • 湖南平台网站建设企业杭州上城区抖音seo有多好
  • 甘肃省环保建设申报网站做公司标志用哪个网站
  • 辽宁鞍山网站建设公司网站栏目 英文
  • 电子商务网站建设策划案中国建筑装饰网排行
  • 阿里巴巴 网站建设正能量软件不良网站免费入口
  • 鹤山区网站建设wordpress插件使用方法
  • 全国建筑企业资质四库一平台优化设计全部答案
  • 找聊城做网站公司起名网