⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 Flush解码源程序
💻 C
字号:
#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <glib.h>#include "jpeg.h"/* getfile */void *getfile(char *path, int *n_bytes);static void dump_pgm(unsigned char *ptr, int rowstride, int width, int height);int main(int argc, char *argv[]){	unsigned char *data;	int len;	JpegDecoder *dec;	char *fn = "biglebowski.jpg";	unsigned char *ptr;	int rowstride;	int width;	int height;	dec = jpeg_decoder_new();	if(argc>1)fn = argv[1];	data = getfile(fn,&len);	jpeg_decoder_addbits(dec, data, len);	jpeg_decoder_parse(dec);	jpeg_decoder_get_component_ptr(dec, 1, &ptr, &rowstride);	jpeg_decoder_get_component_size(dec, 1, &width, &height);	dump_pgm(ptr, rowstride, width, height);	return 0;}/* getfile */void *getfile(char *path, int *n_bytes){	int fd;	struct stat st;	void *ptr = NULL;	int ret;	fd = open(path, O_RDONLY);	if(!fd)return NULL;	ret = fstat(fd, &st);	if(ret<0){		close(fd);		return NULL;	}		ptr = malloc(st.st_size);	if(!ptr){		close(fd);		return NULL;	}	ret = read(fd, ptr, st.st_size);	if(ret!=st.st_size){		free(ptr);		close(fd);		return NULL;	}	if(n_bytes)*n_bytes = st.st_size;	close(fd);	return ptr;}static void dump_pgm(unsigned char *ptr, int rowstride, int width, int height){	int x,y;	printf("P2\n");	printf("%d %d\n",width,height);	printf("255\n");	for(y=0;y<height;y++){		for(x=0;x<width;x++){			printf("%d ",ptr[x]);			if((x&15)==15){				printf("\n");			}		}		printf("\n");		ptr += rowstride;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -