单色位图的读取

来源:互联网 发布:软件测试管理书籍 编辑:程序博客网 时间:2024/04/28 23:10
/*+++++++++++++++++++++++++++++++++单色位图数据的读取++author:zhouyong2013-5-1 14:56++++++++++++++++++++++++++++++++++++++++*/#include <stdio.h>#include <stdlib.h>int main(){FILE *fp;char tmp;fp=fopen("in.bmp","rb");int weight,height;fseek(fp,18,SEEK_CUR);fread(&weight,4,1,fp);//偏移18字节,长度4字节,位图宽度fread(&height,4,1,fp);//偏移22字节,长度4字节,位图高度printf("weight:%d height:%d \n",weight,height);fseek(fp,0x3e,SEEK_SET);//二值图像数据的偏移char *pho=(char *)malloc(sizeof(char)*weight*height);//存储图像的每一个像素点int i,j,k;for(i=height-1;i>=0;i--){for(j=0;j<weight/8;j++)//图像的宽度现在只能是4*8的倍数,如64,96...{fread(&tmp,1,1,fp);for(k=0;k<8;k++){if(tmp&(1<<(7-k)))pho[i*weight+j*8+k]=1;elsepho[i*weight+j*8+k]=0;}}}for(i=0;i<height;i++){for(j=0;j<weight;j++){printf("%d",pho[i*weight+j]);}printf("\n");}fclose(fp);return 0;}


 

原创粉丝点击