问题引入:
解析一张bmp图片文件,(bmp图片文件格式)
(1)判断是否为真正的bmp文件,输出判断结果;
(2)如果是
求bmp文件的大小?
bmp文件的宽和高?
bmp文件的分辨率?
bmp文件中一个像素点占了个字节?
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc,char**argv)
{
//打开bmp图片文件
int fd = open(argv[1],O_RDONLY);
if(fd == -1)
{
perror("open bmp error:");
return -1;
}
//操作
//判断是否为BMP图片
char buf[2];
read(fd,buf,2);
if(buf[0] != 0x42 || buf[1] != 0x4d)
{
printf("NO\n");
close(fd);
return -1;
}
printf("Yes\n");
//bmp文件的大小
//int size;
char buff[4];
read(fd,buff,4);
//printf("size = %d\n",size);
int size = buff[0] | (buff[1]<<8)|(buff[2]<< 16)|(buff[3]<< 24);
printf("size = %d\n",size);
//获取宽和高
lseek(fd,0x12,SEEK_SET);//定位光标
int w,h;
read(fd,&w,4);
read(fd,&h,4);
printf("分辨率:w(%d) * h(%d) = %d\n",w,h,w*h);
//获取色深
lseek(fd,0x1C,SEEK_SET);//定位光标
short depth;
read(fd,&depth,2);
printf("depth = %d\n",depth/8);
//关闭文件
close(fd);
}
关注博主不迷路,博主带你上高速!