|
[PHP]
#include<stdio.h>
#include<wchar.h>
#include<fcntl.h>
int main(int argc,char *argv[])
{
int fd;
unsigned char char_a,char_b,char_c;
unsigned int int_a;
unsigned short short_a;
int i;//循环用
fd=open(argv[1],O_RDONLY); //用argv标识出要分析的BMP文件的文件名
if(fd==-1)
{
printf("Open BMP file fail!!!\n");
exit(0);
}
read(fd,&char_a,sizeof(char));
read(fd,&char_b,sizeof(char));
printf("文件标识为:%c %c\n",char_a,char_b);
read(fd,&int_a,sizeof(int));
printf("文件大小为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("保留位为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("到位图数据的偏移量为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("信息头为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图宽度为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图高度为:%d\n",int_a);
read(fd,&short_a,sizeof(short));
printf("位图位面为:%d\n",short_a);
read(fd,&short_a,sizeof(short));
printf("位图色位为:%d\n",short_a);
read(fd,&int_a,sizeof(int));
printf("压缩说明标识为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图数据大小为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图水平分辨率为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图垂直分辨率为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图使用的颜色数目为:%d\n",int_a);
read(fd,&int_a,sizeof(int));
printf("位图中重要的颜色数目为:%d\n",int_a);
for(i=0;i<300;i++)
{
read(fd,&char_a,sizeof(char));
read(fd,&char_b,sizeof(char));
read(fd,&char_c,sizeof(char));
printf("位图中第%d个颜色的R为:%d G为%d B为%d",i,(unsigned int)char_a,(unsigned int)char_b,(unsigned int)char_c);
printf("\n");
//printf("位图中第%d个颜色的E为:%d\n",i,(unsigned int)char_a);
//24位颜色没有填充符
}
close(fd);
return 0;
}[/PHP]
注意:这个程序里读取RGB信息的部分好象有问题
还有BMP文件的图象信息区的第一个数值是从图象左下角开始的 |
|