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

📄 logo_cnv.c

📁 Linux程序设计权威指南代码.包含所有章节代码
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#define HT (0)#define HT_MAX (224)#define XSIZE  (257)#define YSIZE  (303)#define PIXELS (XSIZE*YSIZE)#define HEADER (15)#define OFFSET (0x20)int main(int argc, char *argv[]){	unsigned long hist[PIXELS]={},cl;	unsigned char rdata[PIXELS+HEADER],gdata[PIXELS+HEADER],bdata[PIXELS+HEADER],idata[PIXELS+HEADER];	FILE*	fp;	int	i,j,ht=HT;	char    filered[80], filegrn[80], fileblu[80], filegrh[80];	if(argc < 3) {		printf("Usage: ./logo_cnv input_image output_image\n");		exit(1);	}	sprintf(filered, "%s.red", argv[1]);	sprintf(filegrn, "%s.grn", argv[1]);	sprintf(fileblu, "%s.blu", argv[1]);	if((fp=fopen(filered,"r"))==NULL){		fprintf(stderr,"red open error\n");		exit(-1);	}	fread(rdata,PIXELS+HEADER,1,fp);	fclose(fp);	if((fp=fopen(filegrn,"r"))==NULL){		fprintf(stderr,"green open error\n");		exit(-1);	}	fread(gdata,PIXELS+HEADER,1,fp);	fclose(fp);	if((fp=fopen(fileblu,"r"))==NULL){		fprintf(stderr,"blue open error\n");		exit(-1);	}	fread(bdata,PIXELS+HEADER,1,fp);	fclose(fp);	for(i=0;i<PIXELS;i++){		cl=(rdata[i+HEADER]<<16)+(gdata[i+HEADER]<<8)+(bdata[i+HEADER]);		for(j=0;j<ht;j++){			if(cl==hist[j]) break;		}		if(j==ht){			hist[ht]=cl;			ht++;		}		idata[i]=j;	}	printf("index size[%d]\n",ht);	printf("index save\n");	/* color index->file */	sprintf(filered, "%s.red", argv[2]);	sprintf(filegrn, "%s.grn", argv[2]);	sprintf(fileblu, "%s.blu", argv[2]);	sprintf(filegrh, "%s.grh", argv[2]);	if((fp=fopen(filered,"w"))==NULL){		fprintf(stderr,"red index open error\n");		exit(-1);	}	for(j=0;j<ht;j++){		cl=(hist[j])>>16;		cl&=0x0ff;		fprintf(fp," 0x%02x,",cl);		if(((j+1)%8)==0) fprintf(fp,"\n");	}	fprintf(fp,"\n");	fclose(fp);	if((fp=fopen(filegrn,"w"))==NULL){		fprintf(stderr,"green index open error\n");		exit(-1);	}	for(j=0;j<ht;j++){		cl=(hist[j])>>8;		cl&=0x0ff;		fprintf(fp," 0x%02x,",cl);		if(((j+1)%8)==0) fprintf(fp,"\n");	}	fprintf(fp,"\n");	fclose(fp);	if((fp=fopen(fileblu,"w"))==NULL){		fprintf(stderr,"blue index open error\n");		exit(-1);	}	for(j=0;j<ht;j++){		cl=hist[j];		cl&=0x0ff;		fprintf(fp," 0x%02x,",cl);		if(((j+1)%8)==0) fprintf(fp,"\n");	}	fprintf(fp,"\n");	fclose(fp);	printf("image save\n");	/*big logo save*/	if((fp=fopen(filegrh,"w"))==NULL){		fprintf(stderr,"index image open error\n");		exit(-1);	}	for(i=0;i<YSIZE;i++){	     for(j=0;j<XSIZE;j++){		  fprintf(fp," 0x%02x,",(OFFSET+(idata[j+i*XSIZE])));		  if(((j+1)%8)==0) fprintf(fp,"\n");	     }	}	fprintf(fp,"\n");	fclose(fp);}

⌨️ 快捷键说明

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