当前位置:文档之家› 24位BMP图像

24位BMP图像

#include<stdio.h>
#include<malloc.h>
void main()
{
FILE *fpIn,*fpOut;
///////////////////////////
struct RGBQUAD
{
unsigned char rgbBlue;
unsigned char rgbGreen;
unsigned char rgbRed;
unsigned char rgbReserved;
} bicolor;
char bfty[2];
short bfreserved1,biplanes,bibitcount;
long bfsize,bfoffbit,bisize,biwidth,biheight;
long bicompression,bisizeimage,bix,biy,biclrused,biclrimportant;
char *cR;
int iCol,iRow;
int i,j;
int iWidth;
char *lpsData;
int iL;
short sTemp;
////////////////////////////////////
fpIn=fopen("F:/课堂学习/遥感数字图像处理/data/AA","rb");
fpOut=fopen("F:/课堂学习/遥感数字图像处理/data/Tm23.bmp","wb");
//D:\??\??????????\Data\data
iCol=600;
iRow=600;
bfty[0]='B';
bfty[1]='M';
bfsize=54+iCol*iRow*3;
bfreserved1=0;
bfoffbit=54;
/////////////////
bisize=40;
biwidth=iCol;
biheight=iRow;
biplanes=1;
bibitcount=24;
bicompression=0;
bisizeimage=iRow*iCol*3;
bix=0;
biy=0;
biclrused=0;
biclrimportant=0;
/////////////////////////
fwrite(&bfty[0],1,1,fpOut);//fprintf
fwrite(&bfty[1],1,1,fpOut);
fwrite(&bfsize,4,1,fpOut);
fwrite(&bfreserved1,2,1,fpOut);
fwrite(&bfreserved1,2,1,fpOut);
fwrite(&bfoffbit,4,1,fpOut);
///////////////////////////////////
fwrite(&bisize,4,1,fpOut);
fwrite(&biwidth,4,1,fpOut);
fwrite(&biheight,4,1,fpOut);
fwrite(&biplanes,2,1,fpOut);
fwrite(&bibitcount,2,1,fpOut);
fwrite(&bicompression,4,1,fpOut);
fwrite(&bisizeimage,4,1,fpOut);
fwrite(&bix,4,1,fpOut);
fwrite(&biy,4,1,fpOut);
fwrite(&biclrused,4,1,fpOut);
fwrite(&biclrimportant,4,1,fpOut);
////////////////////////////////////////////// ///////////////////////////////
iWidth=(iCol*3+3)/4*4;//为什么?
cR=(char *)malloc(iWidth*sizeof(char)*iRow); lpsData=(char *)malloc(600*sizeof(char));
////////////////////////////
fseek(fpIn,600*600*1,0);
for(i=0;i<iRow;i++)
{
fread(lpsData,1,600,fpIn);
for(j=0;j<iCol;j++)//600
{
iL=(iRow-1-i)*iWidth+j*3;
sTemp=lpsData[j];//[750+j*5+0];
cR[iL]=sTemp*2;
}
}
fseek(fpIn,600*600*2,0);
for(i=0;i<iRow;i++)
{
fread(lpsData,1,600,fpIn);
for(j=0;j<iCol;j++)//600
{
iL=(iRow-1-i)*iWidth+j*3+1;
sTemp=lpsData[j];//[750+j*5+0];
cR[iL]=sTemp*2;
}
}
fseek(fpIn,600*600*3,0);
for(i=0;i<iRow;i++)
{
fread(lpsData,1,600,fpIn);
for(j=0;j<iCol;j++)//600
{
iL=(iRow-1-i)*iWidth+j*3+2;
sTemp=lpsData[j];//[750+j*5+0];
cR[iL]=sTemp*2;
}
}
fwrite(cR,sizeof(char),iWidth*iRow,fpOut); free(cR);
free(lpsData);
fclose(fpOut);
fclose(fpIn);
}。

相关主题