主题:目前可以找到的最完整,最精细的bmp格式解析
写了一个位图的操作类,找了不少的bmp文件结构解析。发现没有一个完全正确的、完整的。在完成这个位图操作类后整理了这一篇位图文件解析。
可以说这是在中国能找的的,最好的bmp文件格式解析。
以前的文章里边给出的代码,是从我的位图操作类中截取的,复制过来不能直接用。
现在我又从新写了几个结构化的位图操作接口,并给出了一个例子。都添加到这个附件中了。新上传的文章里的函数也用新写的函数替换了,并且原来的文章中使用了几个常量没有说明。现在也添加进去了。
例子程序:
#include <cstdio>
#include <cstdlib>
#include "CBmp.h"
int main( int argc, char** argv )
{
CBmp tmpBmp;
if (argc!=3)
printf("usage filename1 filename2\n");
else
{
if (openBmp(tmpBmp,argv[1]))
{
DWORD imW=getWidth(tmpBmp);
DWORD imH=getHeight(tmpBmp);
BYTE * Im=new BYTE[imW*imH];
tranToArray(tmpBmp,Im);
createGrayBmp(tmpBmp,Im,imW,imH);
saveBmp(tmpBmp,argv[2]);
delete [] Im;
releaseBmp(tmpBmp);
}
else
printf("can not open %s!\n",argv[1]);
}
return 0;
}
第二次修改,文章中的两处错误。代码中的两处错误,实现也有稍微修改。
可以说这是在中国能找的的,最好的bmp文件格式解析。
以前的文章里边给出的代码,是从我的位图操作类中截取的,复制过来不能直接用。
现在我又从新写了几个结构化的位图操作接口,并给出了一个例子。都添加到这个附件中了。新上传的文章里的函数也用新写的函数替换了,并且原来的文章中使用了几个常量没有说明。现在也添加进去了。
例子程序:
#include <cstdio>
#include <cstdlib>
#include "CBmp.h"
int main( int argc, char** argv )
{
CBmp tmpBmp;
if (argc!=3)
printf("usage filename1 filename2\n");
else
{
if (openBmp(tmpBmp,argv[1]))
{
DWORD imW=getWidth(tmpBmp);
DWORD imH=getHeight(tmpBmp);
BYTE * Im=new BYTE[imW*imH];
tranToArray(tmpBmp,Im);
createGrayBmp(tmpBmp,Im,imW,imH);
saveBmp(tmpBmp,argv[2]);
delete [] Im;
releaseBmp(tmpBmp);
}
else
printf("can not open %s!\n",argv[1]);
}
return 0;
}
第二次修改,文章中的两处错误。代码中的两处错误,实现也有稍微修改。