黑白位图

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma pack (1)
typedef struct
{
unsigned char info[2]; //BM
unsigned int size; //
unsigned int reserve1; //0
unsigned int offset; //0x3E
unsigned int headerinfo; //0x28
unsigned int width; //
unsigned int height; //
unsigned short planes; //1
unsigned short bitpixel; //1
unsigned int compression; //0
unsigned int datasize; //
unsigned int hres; //0
unsigned int vres; //0
unsigned int colors; //0
unsigned int important; //0
unsigned int palette; //0
unsigned int bdata; //0xFFFFFF00
}BMPHEADER;

void mkbmp(int width,int height,char *data,int datasize)
{
BMPHEADER header;
FILE *fp = NULL;

memset(&header,0,sizeof(BMPHEADER));

header.info[0] = 'B';header.info[1] = 'M';
header.size = datasize + sizeof(header);
header.reserve1 = 0;
header.offset = 0x3E;
header.headerinfo = 0x28;
header.width = width;header.height = height;
header.planes = 1;header.bitpixel = 1;
header.compression = 0;
header.datasize = datasize;
header.hres = 0;header.vres = 0;
header.colors = 0;
header.important = 0;header.palette = 0;
header.bdata = 0xFFFFFF;

fp = fopen("bmp.bmp","wb");
fwrite(&header,sizeof(header),1,fp);
fwrite(data,datasize,1,fp);
fclose(fp);
}

void main()
{
BMPHEADER header;

FILE* fp;
char *buffer = "\xF0\0\0\0\x0F\0\0\0";
int width = 4,height = 2;
int bwidth = ((width + 7) / 8 + 3)/4 * 4;
int size =  bwidth * height;

mkbmp(width,height,buffer,size);

fp = fopen("f:\\1.bmp","rb");
fread((void*)&header,1,sizeof(BMPHEADER),fp);

printf("info=%c%c\n",header.info[0],header.info[1]);
printf("size=%d\n",header.size);
printf("reserve1=%d\n",header.reserve1);
printf("offset=%d\n",header.offset);
printf("headerinfo=%d\n",header.headerinfo);
printf("width=%d\n",header.width);
printf("height=%d\n",header.height);
printf("planes=%d\n",header.planes);
printf("compression=%d\n",header.compression);
printf("datasize=%d\n",header.datasize);
printf("hres=%d\n",header.hres);
printf("vres=%d\n",header.vres);
printf("colors=%d\n",header.colors);
printf("important=%d\n",header.important);
printf("palette=%d\n",header.palette);
printf("bdata=%x\n",header.bdata);


fclose(fp);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值