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

建设童装网站的意义网页设计报告论文

建设童装网站的意义,网页设计报告论文,网站备案填写,国内品牌营销成功案例Linux截图工具gsnap移植arm平台过程记录 最近工作中一款新产品开发接近尾声#xff0c;需要写文档截图产品图形#xff0c;找了一款开源的Linux截屏工具gsnap#xff0c;将其移植到ARM产品中#xff0c;这里记录一下移植过程。 gsnap 这个工具源代码就是一个C语言源文件需要写文档截图产品图形找了一款开源的Linux截屏工具gsnap将其移植到ARM产品中这里记录一下移植过程。 gsnap 这个工具源代码就是一个C语言源文件gsnap.c感谢作者的分享。 /** File: gsnap.c* Author: Li XianJing xianjimlihotmail.com* Brief: snap the linux mobile device screen.** Copyright (c) 2009 Li XianJing xianjimlihotmail.com** Licensed under the Academic Free License version 2.1** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//** History:* * 2009-08-20 Li XianJing xianjimlihotmail.com created* 2011-02-28 Li XianJing xianjimlihotmail.com suppport RGB888 framebuffer.* 2011-04-09 Li XianJing xianjimlihotmail.com merge figofutures png output.* ref: http://blog.chinaunix.net/space.php?uid15059847doblogcuid2040565**/#include png.h #include fcntl.h #include stdio.h #include stdlib.h #include unistd.h #include string.h #include jpeglib.h #include sys/mman.h #include sys/stat.h #include sys/types.h #include linux/fb.h #include linux/kd.hstruct _FBInfo; typedef struct _FBInfo FBInfo; typedef int (*UnpackPixel)(FBInfo* fb, unsigned char* pixel, unsigned char* r, unsigned char* g, unsigned char* b);struct _FBInfo {int fd;UnpackPixel unpack;unsigned char *bits;struct fb_fix_screeninfo fi;struct fb_var_screeninfo vi; };#define fb_width(fb) ((fb)-vi.xres) #define fb_height(fb) ((fb)-vi.yres) #define fb_bpp(fb) ((fb)-vi.bits_per_pixel3) #define fb_size(fb) ((fb)-vi.xres * (fb)-vi.yres * fb_bpp(fb))static int fb_unpack_rgb565(FBInfo* fb, unsigned char* pixel, unsigned char* r, unsigned char* g, unsigned char* b) {unsigned short color *(unsigned short*)pixel;*r ((color 11) 0xff) 3;*g ((color 5) 0xff) 2;*b (color 0xff ) 3;return 0; }static int fb_unpack_rgb24(FBInfo* fb, unsigned char* pixel, unsigned char* r, unsigned char* g, unsigned char* b) {*r pixel[fb-vi.red.offset3];*g pixel[fb-vi.green.offset3];*b pixel[fb-vi.blue.offset3];return 0; }static int fb_unpack_argb32(FBInfo* fb, unsigned char* pixel, unsigned char* r, unsigned char* g, unsigned char* b) {*r pixel[fb-vi.red.offset3];*g pixel[fb-vi.green.offset3];*b pixel[fb-vi.blue.offset3];return 0; }static int fb_unpack_none(FBInfo* fb, unsigned char* pixel, unsigned char* r, unsigned char* g, unsigned char* b) {*r *g *b 0;return 0; }static void set_pixel_unpacker(FBInfo* fb) {if(fb_bpp(fb) 2){fb-unpack fb_unpack_rgb565;}else if(fb_bpp(fb) 3){fb-unpack fb_unpack_rgb24;}else if(fb_bpp(fb) 4){fb-unpack fb_unpack_argb32;}else{fb-unpack fb_unpack_none;printf(%s: not supported format.\n, __func__);}return; }static int fb_open(FBInfo* fb, const char* fbfilename) {fb-fd open(fbfilename, O_RDWR);if (fb-fd 0){fprintf(stderr, cant open %s\n, fbfilename);return -1;}if (ioctl(fb-fd, FBIOGET_FSCREENINFO, fb-fi) 0)goto fail;if (ioctl(fb-fd, FBIOGET_VSCREENINFO, fb-vi) 0)goto fail;fb-bits mmap(0, fb_size(fb), PROT_READ | PROT_WRITE, MAP_SHARED, fb-fd, 0);if (fb-bits MAP_FAILED)goto fail;printf(---------------framebuffer---------------\n);printf(%s: \n width : %8d\n height: %8d\n bpp : %8d\n r(%2d, %2d)\n g(%2d, %2d)\n b(%2d, %2d)\n,fbfilename, fb_width(fb), fb_height(fb), fb_bpp(fb), fb-vi.red.offset, fb-vi.red.length,fb-vi.green.offset, fb-vi.green.length,fb-vi.blue.offset, fb-vi.blue.length);printf(-----------------------------------------\n);set_pixel_unpacker(fb);return 0;fail:printf(%s is not a framebuffer.\n, fbfilename);close(fb-fd);return -1; }static void fb_close(FBInfo* fb) {munmap(fb-bits, fb_size(fb));close(fb-fd);return; }static int snap2jpg(const char * filename, int quality, FBInfo* fb) {int row_stride 0; FILE * outfile NULL;JSAMPROW row_pointer[1] {0};struct jpeg_error_mgr jerr;struct jpeg_compress_struct cinfo;memset(jerr, 0x00, sizeof(jerr));memset(cinfo, 0x00, sizeof(cinfo));cinfo.err jpeg_std_error(jerr);jpeg_create_compress(cinfo);if ((outfile fopen(filename, wb)) NULL) {fprintf(stderr, cant open %s\n, filename);return -1;}jpeg_stdio_dest(cinfo, outfile);cinfo.image_width fb_width(fb);cinfo.image_height fb_height(fb);cinfo.input_components 3;cinfo.in_color_space JCS_RGB;jpeg_set_defaults(cinfo);jpeg_set_quality(cinfo, quality, TRUE);jpeg_start_compress(cinfo, TRUE);row_stride fb_width(fb) * 2;JSAMPLE* image_buffer malloc(3 * fb_width(fb));while (cinfo.next_scanline cinfo.image_height) {int i 0;int offset 0;unsigned char* line fb-bits cinfo.next_scanline * fb_width(fb) * fb_bpp(fb);for(i 0; i fb_width(fb); i, offset 3, line fb_bpp(fb)){fb-unpack(fb, line, image_bufferoffset, image_buffer offset 1, image_buffer offset 2);}row_pointer[0] image_buffer;(void) jpeg_write_scanlines(cinfo, row_pointer, 1);}jpeg_finish_compress(cinfo);fclose(outfile);jpeg_destroy_compress(cinfo);return 0; }//Ref: http://blog.chinaunix.net/space.php?uid15059847doblogcuid2040565 static int snap2png(const char * filename, int quality, FBInfo* fb) {FILE *outfile;if ((outfile fopen(filename, wb)) NULL){fprintf(stderr, cant open %s\n, filename);return -1;}/* prepare the standard PNG structures */png_structp png_ptr png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0);png_infop info_ptr png_create_info_struct(png_ptr);/* setjmp() must be called in every function that calls a PNG-reading libpng function */if (setjmp(png_jmpbuf(png_ptr))){png_destroy_write_struct(png_ptr, info_ptr);fclose(outfile);return -1;}/* initialize the png structure */png_init_io(png_ptr, outfile);//int width 0;int height 0;int bit_depth 8;int color_type PNG_COLOR_TYPE_RGB;int interlace 0;width fb_width(fb);height fb_height(fb);png_set_IHDR (png_ptr, info_ptr, width, height, bit_depth, color_type,(!interlace) ? PNG_INTERLACE_NONE : PNG_INTERLACE_ADAM7,PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);/* write the file header information */png_write_info(png_ptr, info_ptr);png_bytep row_pointers[height];png_byte* image_buffer malloc(3 * width);int i 0;int j 0;unsigned char* line NULL;for( ; i height; i ){line (char*)fb-bits i * width * fb_bpp(fb);for(j 0; j width; j, line fb_bpp(fb)){int offset j * 3;fb-unpack(fb, line, image_bufferoffset, image_bufferoffset1, image_bufferoffset2);}row_pointers[i] image_buffer;png_write_rows(png_ptr, row_pointers[i], 1);}png_destroy_write_struct(png_ptr, info_ptr);fclose(outfile);return 0;}int main(int argc, char* argv[]) {FBInfo fb;const char* filename NULL;const char* fbfilename NULL;if(argc ! 3){printf(\nUsage: %s [jpeg|png file] [framebuffer dev]\n, argv[0]);printf(Example: %s fb.jpg /dev/fb0\n, argv[0]);printf(-----------------------------------------\n);printf(Powered by broncho(www.broncho.cn)\n\n);return 0;}filename argv[1];fbfilename argv[2];memset(fb, 0x00, sizeof(fb));if (fb_open(fb, fbfilename) 0){if(strstr(filename, .png) ! NULL){snap2png(filename, 100, fb);}else{snap2jpg(filename, 100, fb);}fb_close(fb);}return 0; }gsnap需要两个依赖库libjpeg和libPng。而libPng还要依赖Zlib库。关于Zlib库的交叉编译请参考我这篇文档不再赘述zlib库的交叉编译记录 编译libjpeg库 从官网ijg.org下载源码 在Linux主机中解压后进入解压目录jpeg-9f。 运行autotools的配置命令进行配置后编译。 ./configure --hostarm-linux-gnueabihf --prefix/root/jpeg-9f/arm_install make make install–host参数是指定编译器我已经将我的ARM交叉编译工具链目录设置在了系统目录中所以这里只需指定编译器前缀就行。 –prefix参数是指定编译后的安装目录编译后make工具会将生成的编译文件和头文件目录拷贝到这个指定目录中。 编译libpng库 从SourceForge中下载源代码我下载的是libpng-1.6.43.tar.gz 在Linux主机中解压后进入解压目录libpng-1.6.43。 注意因为需要zlib库故先配置一下几个编译变量。 export LDFLAGS-L/root/zlib/arm_install/lib export CFLAGS-I/root/zlib/arm_install/include export CPPFLAGS-I/root/zlib/arm_install/includeLDFLAGS是编译器搜索库文件路径变量。 CFLAGS是编译器C语言编译选项变量这里是设置zlib库的头文件位置。 CPPFLAGS是编译器预处理器选项变量这里是设置zlib库的头文件位置。 设置环境变量完毕后运行配置命令进行配置后编译。 ./configure --hostarm-linux-gnueabihf --prefix/root/libpng-1.6.43/arm_install make make install编译gsnap 几个库都准备好了进入gsnap目录将gsnap.c文件拷贝进来进行编译。编译命令如下 arm-linux-gnueabihf-gcc -o gsnap gsnap.c \ -L/root/jpeg-9f/arm_install/lib \ -L/root/libpng-1.6.43/arm_install/lib \ -L/root/zlib/arm_install/lib \ -I/root/jpeg-9f/arm_install/include \ -I/root/libpng-1.6.43/arm_install/include \ -I/root/zlib/arm_install/include \ -static -ljpeg -lpng -lz -lm此命令是用静态链接方式编译后不再需要几个库文件单独使用编译后的gsnap文件即可。 将编译目标文件gsnap拷贝到arm板子中。 运行命令: gsnap test.jpg /dev/fb0这样就捕获了当前屏幕的截图文件test.jpg。 如果文章对您有用请随手点个赞谢谢^_^
http://www.w-s-a.com/news/795500/

相关文章:

  • 高性能网站建设指南北京城乡建设官方网站
  • 企业网站找谁做做淘宝相关网站
  • 商业网站网站建设wordpress关闭前端公共库
  • 打开山东城市建设职业学院网站下载了wordpress后
  • 四川网站建设设计城乡建设网站证件查询系统
  • 企业邮箱哪里买栾城seo整站排名
  • 长沙网站建设zh68网页制作技术实训报告
  • 电商网站的功能手机广告设计与制作软件
  • 做网站前端需要编程基础吗杭州市住房和城乡建设局
  • 网站开发一般学多久网站建设投标方案
  • 北京网站建设报价表制作短视频的软件有哪些
  • 长沙企业网站开发西安建设公司网站
  • 做图的兼职网站网站开发用了哪些知识要点
  • php网站怎么做静态化微慕wordpress插件
  • 电商营业执照wordpress利于seo
  • 那些网站主做玄幻小说营销策略都有哪些方面
  • 同一源代码再建设一个网站建立网站免费
  • 网站更换服务器影响做seo必须有网站吗
  • 免费网页模板网站php微信微网站怎么做
  • 网站的优点和缺点腾讯企点是什么软件
  • 谷歌英文网站推广网页设计好看的网站
  • 衡水网站建设集团各大网站注册
  • 违法网站开发做注册任务网站源码
  • 帝国cms仿站工具淮南寿县
  • 深圳网站建设方案外包手机怎样使用域名访问网站
  • 安陆市建设局网站磐安做网站
  • 梧州市建设局官方网站商旅100网页版
  • 好的宝安网站建设中企动力的网站开发语言
  • flash网站模板怎么用怎么套模板 网站
  • 建设二手商品网站总结石景山安保服务公司电话