c语言代码写bmp

 #include<stdio.h>
typedef struct BITMAPFILEHEADER
{  
 short bfType;
 long  bfSize;
 short bfReserved1;
 short bfReserved2;
 long bfOffBits;
}BITMAPFILEHEADER;
BITMAPFILEHEADER bitmapfileheader;

typedef struct BITMAPINFOHEADER
{
 long biSize;
 long biWidth;
 long biHeight;
 short biPlanes;
 short biBitCount;
 long biCompression;
 long biSizeImage;
 long biXPelsPerMeter;
 long biYPelsPerMeter;
 long biClrUsed;
 long biClrImportant;
}BITMAPINFOHEADER;

typedef struct RGBQUAD
{
  unsigned char rgbBlue;
  unsigned char rgbGreen;
  unsigned char rgbRed;
  unsigned char rgbReserved;
}RGBQUAD;


typedef struct BITMAPINFO
{
 BITMAPINFOHEADER bmiHeader;
 RGBQUAD bmiColors[256];
}BITMAPINFO;
BITMAPINFO bitmapinfo;

int main()
{

 
 FILE* fp;
 if((fp=fopen("test.bmp","wb"))==NULL)
 {
  printf("cannot open the file");
  return 0;
 }
 fseek(fp,0,0);
 bitmapfileheader.bfType=0x4D42;
 bitmapfileheader.bfReserved1=0;
 bitmapfileheader.bfReserved2=0;
 bitmapfileheader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFO)-2;
 bitmapfileheader.bfSize=bitmapfileheader.bfOffBits+10000;
 
 bitmapinfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
 bitmapinfo.bmiHeader.biWidth=100;
 bitmapinfo.bmiHeader.biHeight=100;
 bitmapinfo.bmiHeader.biPlanes=1;
 bitmapinfo.bmiHeader.biBitCount=8;
 bitmapinfo.bmiHeader.biCompression=0;
 bitmapinfo.bmiHeader.biSizeImage=0;
 bitmapinfo.bmiHeader.biXPelsPerMeter=0;
 bitmapinfo.bmiHeader.biYPelsPerMeter=0;
 bitmapinfo.bmiHeader.biClrUsed=0;
 bitmapinfo.bmiHeader.biClrImportant=0;
   
 bitmapinfo.bmiColors[0].rgbBlue=0;
 bitmapinfo.bmiColors[0].rgbGreen=0;
 bitmapinfo.bmiColors[0].rgbRed=0;
 bitmapinfo.bmiColors[0].rgbReserved=0;

 bitmapinfo.bmiColors[1].rgbBlue=0;
 bitmapinfo.bmiColors[1].rgbGreen=0;
 bitmapinfo.bmiColors[1].rgbRed=80;
 bitmapinfo.bmiColors[1].rgbReserved=0;

 bitmapinfo.bmiColors[2].rgbBlue=0;
 bitmapinfo.bmiColors[2].rgbGreen=80;
 bitmapinfo.bmiColors[2].rgbRed=0;
 bitmapinfo.bmiColors[2].rgbReserved=0;

 bitmapinfo.bmiColors[3].rgbBlue=0;
 bitmapinfo.bmiColors[3].rgbGreen=80;
 bitmapinfo.bmiColors[3].rgbRed=80;
 bitmapinfo.bmiColors[3].rgbReserved=0;

 for(int i=4;i<256;i++)
 {
  bitmapinfo.bmiColors[i].rgbBlue=0;
  bitmapinfo.bmiColors[i].rgbGreen=0;
  bitmapinfo.bmiColors[i].rgbRed=80;
  bitmapinfo.bmiColors[i].rgbReserved=0;
 }
 long l=ftell(fp);
 fwrite(&bitmapfileheader.bfType,2,1,fp);
 l=ftell(fp);
 fwrite(&bitmapfileheader.bfSize,4,1,fp);
  l=ftell(fp);
 fwrite(&bitmapfileheader.bfReserved1,2,1,fp);
  l=ftell(fp);
 fwrite(&bitmapfileheader.bfReserved2,2,1,fp);
  l=ftell(fp);
 fwrite(&bitmapfileheader.bfOffBits,4,1,fp);
  l=ftell(fp);

 fwrite(&bitmapinfo,sizeof(BITMAPINFO),1,fp);
 
 for(i=0;i<100;i++)
  for(int j=0;j<100;j++)
  {
   if((0<=j)&&(j<=24))
    fprintf(fp,"%c",0);
   else if((25<=j)&&(j<=49))
    fprintf(fp,"%c",1);
   else if((50<=j)&&(j<=74))
    fprintf(fp,"%c",2);
   else
    fprintf(fp,"%c",3);
  }
 return 0;
}

用c语言编写8位的位图,生成的图片如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值