亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 在linux控制臺(tái)下顯示jpeg圖像.c

?? 在Linux控制臺(tái)下顯示JPEG圖像,大家共享
?? C
字號(hào):
/* * $Id: fv.c * $Desp: draw jpeg to framebuffer * $Author: rockins * $Date: 20:15:49 CST 2008 */#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <linux/fb.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <jpeglib.h>#include <jerror.h>#define	FB_DEV	"/dev/fb0"/***************** function declaration ******************/void            usage(char *msg);unsigned short  RGB888toRGB565(unsigned char red,							   unsigned char green, unsigned char blue);int             fb_open(char *fb_device);int             fb_close(int fd);int             fb_stat(int fd, int *width, int *height, int *depth);void           *fb_mmap(int fd, unsigned int screensize);int             fb_munmap(void *start, size_t length);int             fb_pixel(void *fbmem, int width, int height,						 int x, int y, unsigned short color);/************ function implementation ********************/intmain(int argc, char *argv[]){	/*	 * declaration for jpeg decompression	 */	struct jpeg_decompress_struct cinfo;	struct jpeg_error_mgr jerr;	FILE           *infile;	unsigned char  *buffer;	/*	 * declaration for framebuffer device	 */	int             fbdev;	char           *fb_device;	unsigned char  *fbmem;	unsigned int    screensize;	unsigned int    fb_width;	unsigned int    fb_height;	unsigned int    fb_depth;	unsigned int    x;	unsigned int    y;	/*	 * check auguments	 */	if (argc != 2) {		usage("insuffient auguments");		exit(-1);	}	/*	 * open framebuffer device	 */	if ((fb_device = getenv("FRAMEBUFFER")) == NULL)		fb_device = FB_DEV;	fbdev = fb_open(fb_device);	/*	 * get status of framebuffer device	 */	fb_stat(fbdev, &fb_width, &fb_height, &fb_depth);	/*	 * map framebuffer device to shared memory	 */	screensize = fb_width * fb_height * fb_depth / 8;	fbmem = fb_mmap(fbdev, screensize);	/*	 * open input jpeg file 	 */	if ((infile = fopen(argv[1], "rb")) == NULL) {		fprintf(stderr, "open %s failed\n", argv[1]);		exit(-1);	}	/*	 * init jpeg decompress object error handler	 */	cinfo.err = jpeg_std_error(&jerr);	jpeg_create_decompress(&cinfo);	/*	 * bind jpeg decompress object to infile	 */	jpeg_stdio_src(&cinfo, infile);	/*	 * read jpeg header	 */	jpeg_read_header(&cinfo, TRUE);	/*	 * decompress process.	 * note: after jpeg_start_decompress() is called	 * the dimension infomation will be known,	 * so allocate memory buffer for scanline immediately	 */	jpeg_start_decompress(&cinfo);	if ((cinfo.output_width > fb_width) ||		(cinfo.output_height > fb_height)) {		printf("too large JPEG file,cannot display\n");		return (-1);	}	buffer = (unsigned char *) malloc(cinfo.output_width *									  cinfo.output_components);	y = 0;	while (cinfo.output_scanline < cinfo.output_height) {		jpeg_read_scanlines(&cinfo, &buffer, 1);		if (fb_depth == 16) {			unsigned short  color;			for (x = 0; x < cinfo.output_width; x++) {				color = RGB888toRGB565(buffer[x * 3], 						buffer[x * 3 + 1], buffer[x * 3 + 2]);				fb_pixel(fbmem, fb_width, fb_height, x, y, color);			}		} else if (fb_depth == 24) {			memcpy((unsigned char *) fbmem + y * fb_width * 3,				   buffer, cinfo.output_width * cinfo.output_components);		}		y++;					// next scanline	}	/*	 * finish decompress, destroy decompress object	 */	jpeg_finish_decompress(&cinfo);	jpeg_destroy_decompress(&cinfo);	/*	 * release memory buffer	 */	free(buffer);	/*	 * close jpeg inputing file	 */	fclose(infile);	/*	 * unmap framebuffer's shared memory	 */	fb_munmap(fbmem, screensize);	/*	 * close framebuffer device	 */	fb_close(fbdev);	return (0);}voidusage(char *msg){	fprintf(stderr, "%s\n", msg);	printf("Usage: fv some-jpeg-file.jpg\n");}/* * convert 24bit RGB888 to 16bit RGB565 color format */unsigned shortRGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue){	unsigned short  B = (blue >> 3) & 0x001F;	unsigned short  G = ((green >> 2) << 5) & 0x07E0;	unsigned short  R = ((red >> 3) << 11) & 0xF800;	return (unsigned short) (R | G | B);}/* * open framebuffer device. * return positive file descriptor if success, * else return -1. */intfb_open(char *fb_device){	int             fd;	if ((fd = open(fb_device, O_RDWR)) < 0) {		perror(__func__);		return (-1);	}	return (fd);}/* * get framebuffer's width,height,and depth. * return 0 if success, else return -1. */intfb_stat(int fd, int *width, int *height, int *depth){	struct fb_fix_screeninfo fb_finfo;	struct fb_var_screeninfo fb_vinfo;	if (ioctl(fd, FBIOGET_FSCREENINFO, &fb_finfo)) {		perror(__func__);		return (-1);	}	if (ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo)) {		perror(__func__);		return (-1);	}	*width = fb_vinfo.xres;	*height = fb_vinfo.yres;	*depth = fb_vinfo.bits_per_pixel;	return (0);}/* * map shared memory to framebuffer device. * return maped memory if success, * else return -1, as mmap dose. */void           *fb_mmap(int fd, unsigned int screensize){	caddr_t         fbmem;	if ((fbmem = mmap(0, screensize, PROT_READ | PROT_WRITE,					  MAP_SHARED, fd, 0)) == MAP_FAILED) {		perror(__func__);		return (void *) (-1);	}	return (fbmem);}/* * unmap map memory for framebuffer device. */intfb_munmap(void *start, size_t length){	return (munmap(start, length));}/* * close framebuffer device */intfb_close(int fd){	return (close(fd));}/* * display a pixel on the framebuffer device. * fbmem is the starting memory of framebuffer, * width and height are dimension of framebuffer, * x and y are the coordinates to display, * color is the pixel's color value. * return 0 if success, otherwise return -1. */intfb_pixel(void *fbmem, int width, int height,		 int x, int y, unsigned short color){	if ((x > width) || (y > height))		return (-1);	unsigned short *dst = ((unsigned short *) fbmem + y * width + x);	*dst = color;	return (0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美激情四射| 日韩天堂在线观看| 免费成人在线观看| 亚洲视频综合在线| 欧美一区二区精品在线| k8久久久一区二区三区| 91麻豆高清视频| 青草av.久久免费一区| 亚洲精选在线视频| 国产亚洲精品福利| 欧美一级生活片| 在线观看三级视频欧美| 成人午夜激情片| 久久精品国产色蜜蜜麻豆| 亚洲综合免费观看高清在线观看| 国产亚洲成年网址在线观看| 欧美一区二区三区婷婷月色| 欧美写真视频网站| 91亚洲精品乱码久久久久久蜜桃 | 久久久久久亚洲综合影院红桃 | 国产综合色在线| 亚洲第一狼人社区| 亚洲欧美另类综合偷拍| 日本一区二区三区电影| 精品久久久久久久久久久院品网 | 亚洲线精品一区二区三区| 欧美经典三级视频一区二区三区| 欧美成人一区二区三区片免费 | 亚洲高清久久久| 亚洲欧美二区三区| 国产精品不卡在线观看| 日本一区免费视频| 久久久精品天堂| 久久蜜桃av一区二区天堂| 日韩视频中午一区| 日韩一区二区不卡| 日韩免费一区二区三区在线播放| 91精品国产福利| 在线综合视频播放| 欧美高清视频不卡网| 欧美在线free| 精品视频一区二区不卡| 欧美日韩一级黄| 欧美电影在线免费观看| 欧美一区二区三区婷婷月色| 欧美一区二区国产| 精品噜噜噜噜久久久久久久久试看 | 2023国产精华国产精品| 精品国产sm最大网站免费看| 久久久噜噜噜久久人人看 | 欧美日韩亚洲综合一区| 91精品国产综合久久精品麻豆| 91精品欧美福利在线观看| 欧美日产国产精品| 日韩精品最新网址| 日韩电影在线一区| 五月婷婷激情综合网| 日本不卡一二三区黄网| 国产麻豆精品视频| jlzzjlzz欧美大全| 欧美色视频一区| 日韩欧美卡一卡二| 国产欧美日韩视频一区二区| 亚洲人成伊人成综合网小说| 亚洲成在人线免费| 免费在线观看视频一区| 国产宾馆实践打屁股91| 91网站最新地址| 6080国产精品一区二区| 国产午夜精品一区二区三区视频| 1024亚洲合集| 日韩不卡一二三区| 成人手机在线视频| 欧美午夜影院一区| 精品国产免费久久| 亚洲女厕所小便bbb| 日本午夜精品视频在线观看 | 成人教育av在线| 欧美午夜电影网| 精品福利在线导航| 一个色妞综合视频在线观看| 在线观看欧美黄色| 精品国产91久久久久久久妲己| 成人欧美一区二区三区黑人麻豆 | 亚洲成av人片在www色猫咪| 免费成人在线观看| 99国产精品久| 日韩免费视频一区二区| 亚洲欧洲综合另类| 精品综合久久久久久8888| 91在线国产福利| 欧美电影免费观看高清完整版在| 国产精品国产精品国产专区不蜜| 日本麻豆一区二区三区视频| 成人av先锋影音| 日韩精品一区二区三区三区免费| 亚洲裸体xxx| 国产精品亚洲专一区二区三区| 色8久久精品久久久久久蜜| 欧美成人精品高清在线播放 | 亚洲精品视频观看| 韩国一区二区三区| 欧美日韩国产另类一区| 国产精品福利在线播放| 国内久久精品视频| 91精品在线免费观看| 亚洲欧洲制服丝袜| 成人蜜臀av电影| 亚洲精品一区二区三区香蕉| 亚洲成人tv网| 色天天综合色天天久久| 亚洲国产精品ⅴa在线观看| 久久99久久精品| 欧美乱妇23p| 亚洲综合区在线| 91亚洲永久精品| 国产精品水嫩水嫩| 国产一区视频网站| 欧美刺激脚交jootjob| 日韩不卡免费视频| 欧美三级蜜桃2在线观看| 日韩伦理电影网| 成人免费看黄yyy456| 久久蜜桃av一区二区天堂| 麻豆国产精品777777在线| 91精品啪在线观看国产60岁| 肉色丝袜一区二区| 欧美区在线观看| 午夜欧美一区二区三区在线播放| 91国内精品野花午夜精品| 亚洲女人****多毛耸耸8| 99精品欧美一区| 亚洲色图.com| 色婷婷国产精品综合在线观看| 日韩美女精品在线| 91影院在线观看| 亚洲精品免费看| 91国产丝袜在线播放| 亚洲黄一区二区三区| 91久久精品一区二区二区| 一区二区视频免费在线观看| 日本道免费精品一区二区三区| 亚洲伦理在线精品| 欧美三级日韩三级| 日本成人在线不卡视频| 精品国产一区二区三区久久影院| 国内精品国产成人国产三级粉色 | 日韩精品高清不卡| 日韩精品资源二区在线| 国产一区二区精品久久99| 国产人妖乱国产精品人妖| 成人av在线观| 夜夜精品视频一区二区 | 国产精品水嫩水嫩| 91香蕉视频污在线| 亚洲福利电影网| 日韩精品一区二区三区在线 | 欧美日韩二区三区| 蜜桃传媒麻豆第一区在线观看| 亚洲精品一区二区三区香蕉 | 一本到不卡精品视频在线观看| 亚洲无人区一区| 日韩欧美在线影院| 国产精品羞羞答答xxdd| 亚洲色图.com| 日韩亚洲欧美中文三级| 国内国产精品久久| 亚洲精品老司机| 欧美一区二区三区视频在线观看 | 国产精品久久久久久妇女6080| 色婷婷av久久久久久久| 日韩成人一区二区| 欧美激情一区二区三区| 色婷婷亚洲精品| 韩国毛片一区二区三区| 国产精品第四页| 91精品国产综合久久精品app| 国产精品亚洲综合一区在线观看| 亚洲色图丝袜美腿| 日韩女优视频免费观看| 色香色香欲天天天影视综合网| 蜜桃av一区二区在线观看| 中文字幕一区二区三区色视频| 91精品国产综合久久国产大片 | 日韩一区二区三区四区| 成人午夜视频网站| 日本中文一区二区三区| 国产精品天天看| 日韩欧美成人一区二区| 在线观看视频一区二区| 懂色av一区二区在线播放| 日韩av中文字幕一区二区| 国产精品毛片大码女人| 欧美成人精品福利| 欧美做爰猛烈大尺度电影无法无天| 国产一区二区视频在线播放| 亚洲成人免费在线观看| 国产精品国产馆在线真实露脸 | 亚洲黄色录像片| 国产区在线观看成人精品|