网站首页  |  论文  |  撰写  |  发表  |  汇款  |  期刊  |  订单  |  联系  |  招聘
 
·陈杰人:北京网络裸聊案的司法教
·吴官正抵达哈瓦那开始访问古巴
·杨涛:校园生死协议践踏法治精神
·熊光楷在日本发表演讲:永远不搞
·医生报告称吸烟者胃肿瘤发病率高
·王小峰:国安争第一?虚张声势还
·国亲两党联手成功阻止“排马条款
·中国巴基斯坦发表联合声明扩大教
·莊子·齊物論》窺管
邮箱:
 
  lunwencentre@126.com
电话: 15820098670
QQ: 438538614
    626506084
·《 科学XX 》杂志

 省级教育 / 月刊

·《XX和XX医学杂志》

 省级医学类 / 月刊

·《 电影XX 》

 国家级核心 / 半月刊

·《 交通 ×× 》

 省级建筑类 / 月刊

首页>论文>自然>正文

在Windows中显示多幅彩色图像的技术

unsigned char TT[256],BB[256];
int width,depth,bytes;
/* 该函数打开图像文件并读图像的宽、高和各调色板的颜色分量,并把文件指针指向图像的开始处*/
FILE *get-bitmap-file(char*fname)
{
unsigned char ch;
int i,j,n;
FILE *fp;
fp=fopen(fname,"rb+");
if (fp==NULL) return NULL;
fseek(fp,18L,SEEK-SET);
fread(&width,2,1,fp);fseek(fp,2L,SEEK-CUR);
fread(&depth,2,1,fp);fseek(fp,2L,SEEK-CUR);
n=width/4;
if (width%4 !=0) n++;
bytes=n*4;
fseek(fp,54L,SEEK-SET);
fread(&palette[0][0],4,256,fp);
return fp;
}
/*该函数实现颜色的压缩*/
void zh_fan-tu(FILE *fp,int color1,int color2)
{
unsigned char *p,*q,cc,ch;
long len;
int max-no, i,j,m,n,r0,b0,g0,r1,b1,g1;
double dd,dmin;
char s[4];
max-no=color2-color1+1;
for (i=0;i<256;i++) TAB[i]=0;
p=(char *)malloc(bytes+1);
for (i=0;i<depth;i++) {
fread(p,bytes,1,fp);
q=p;
for (j=0;j<bytes;j++,q++) if(j>=width) break;
else {
ch=(unsigned char)*q;
TAB[ch]++;
}
}
for (i=0;i<256;i++) tt[i]=(unsigned char)i;
for (i=0;i<255;i++) for (j=i+1;j<256;j++)
if (TAB[i]<TAB[j]){
len=TAB[i];TAB[i]=TAB[j];TAB[j]=len;
cc=TT[i];TT[i]=TT[j];TT[j]=cc;
memcpy(s,&palette[i][0],4);
memcpy(&palette[i][0],&palette[j][0],4);
memcpy(&palette[j][0],s,4);
}
for (i=color2;i>=color1;i--)
memcpy(&palette[i][0],&palette[i-color1][0],4);
for (i=0;i<max-no;i++) BB[TT[i]]=(unsigned char)i;
for (i=max-no;i<256;i++) {
r0=palette[i][2];
g0=palette[i][1];
b0=palette[i][0];
dmin=256.0*256.0*256.0;
m=0;
for (j=0;j<max-no;j++) {
r1=palette[j][2];
g1=palette[j][1];
b1=palette[j][0];
dd=1.0*(r0-r1)*(r0-r1)+1.0*(g0-g1)*(g0-g1)+1.0*(b0-b1)*(b0-b1);
dd=sqrt(dd);
if (dmin>dd) {dmin=dd;m=j;}
}
BB[TT[i]]=(unsigned char)m;
}
for (i=0;i<256;i++) BB[i]+=color1;
}
void w-create-bitmap(FILE *fp)
{
int i,j,n,m,t;
long len;
unsigned char far *p,far *q,cc,ch;
unsigned nn;
fseek(fp,54L,SEEK-SET);
len=ftell(fp);
fwrite(&palette[0][0],4,256,fp);
p=(unsigned char far *)farmalloc(bytes+1);
len=ftell(fp);
for (i=0;i<depth;i++) {
fseek(fp,len,SEEK-SET);
fread(p,bytes,1,fp);
fseek(fp,len,SEEK-SET);
len+=bytes;
q=p;
for (j=0;j<width;j++,q++) {
cc=(unsigned char)(*q);
ch=BB[cc];
*q=ch;
}
fwrite(p,bytes,1,fp);
}
farfree(p);
}
main(int argc,char *args[])
{
FILE *fp;
if (argc<4) {
printf("参数:文件名 颜色下限 颜色上限\n");
return;
}
fp=get-bitmap-file(args[1]);
if (fp==NULL) return;
zh-fan-tu(fp,atoi(args[2],atoi(args[3]));
w-create-bitmap(fp);
fclose(fp);
}

参考文献
王旭 张军译.Microsoft Windows 3.1程序员参考手册.北京:清华大学出版社,1994.

本新闻共3页,当前在第3页  1  2  3  

起点中文网  中国论文联盟  红袖添香  黄金书屋  新浪读书  舞文弄墨-天涯社区  网易文化频道  腾讯读书  网文报社  文学酷站  且听风吟
关于我们 | 联系热线 | 广告刊登 | 友情链接 | 网站地图 | 帮助HELP
Copyright 2001-2005 《论文中心》--轻松生活,一起创造!
(中国老牌知名“论文网”)
《论文中心》提供专业的“文稿写作”、“论文发表”服务!四年成功运营,品质值得信赖!
主要业务:论文代写,论文发表,商业策划,资料翻译,书稿出版,文书撰写等!
本站坚持:优质、诚信、高效、安全四大原则!需要“发表论文、代写论文”请与本站联系!