#include<stdio.h>
#include<windows.h>
void main()
{
FILE *fp=fopen("lenaRGB.raw","rb");
if(fp==NULL)
{
printf("can not open lena.raw\n");
return ;
}
unsigned char *image[1000];
for(int i=0;i<512;i++)
{
image[i]=new unsigned char[512];
fread(image[i],1,512,fp);
}
fclose(fp);
FILE *fp1=fopen("new_lena.bmp","wb");
if(fp1==NULL)
{
printf("can not open new.bmp\n");
return ;
}
int imageW=512;
int imageH=512;
int storeW=imageW;
if(storeW%4!=0)
storeW+=(4-storeW%4);
BITMAPFILEHEADER bh;//位图文件头
//bh.bfType=(WORD)('M'<<8|'B');
bh.bfType=(UINT)"BM";
bh.bfReserved1=0;
bh.bfReserved2=0;
bh.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256+storeW*imageH;
bh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256;
BITMAPINFOHEADER bInfo;
bInfo.biSize=sizeof(BITMAPINFOHEADER);
bInfo.biWidth=imageW;
bInfo.biHeight=imageH;
bInfo.biPlanes=1;
bInfo.biBitCount=8;
bInfo.biCompression=BI_RGB;
bInfo.biSizeImage=storeW*imageH;
bInfo.biXPelsPerMeter=0;
bInfo.biYPelsPerMeter=0;
bInfo.biClrUsed=256;
bInfo.biClrImportant=0;
fwrite(&bh,sizeof(BITMAPFILEHEADER),1,fp1);
fwrite(&bInfo,sizeof(BITMAPFILEHEADER),1,fp1);
RGBQUAD rgb;
rgb.rgbReserved=0;
for(i=0;i<256;i++)
{
rgb.rgbBlue=rgb.rgbGreen=rgb.rgbRed=i;
fwrite(&rgb,sizeof(RGBQUAD),1,fp1);
}
for(i=0;i<256;i++)
{
fwrite(image[511-i],1,512,fp1);
}
fclose(fp1);
}
解决方案 »
- 文本读入到edit的问题
- 32位进程加载动态库,是会加载到0-2G空间还是2-4G空间?
- 大家帮我看看这个需求如何建立mfc
- 现在小学语文太难了!!!!
- 往文件中写二进制数据,但是遇到十六进制的50前面自动加上B0。请问这是为什么?
- 关于FLASH播放动画的问题
- 在MDI程序中,根据树型中双击项目,如何动态的创建文档实例.(我已试了多种思路)
- 如何在一个类中使用另一个类有动作?谢谢!
- 如何设置进程的优先级
- 请指教:我是刚学习VC,现在有一个问题:在对话框上有一个BUTTON,现在怎么映射MOUSE在BUTTON移动时的移动消息?
- 无法理解undefined reference
- 关于程序生成后版本号的问题
RGBQUAD
这两个结构体事前定义了么?
在#include<windows.h>里?