请登陆或者注册新用户 用户名 密码 记住密码 注册新用户

回 帖 快速回帖 发 新 帖 刷新版面
主题:目前可以找到的最完整,最精细的bmp格式解析

作者:tr0217

专家分:730

级别:4级别:4级别:4

发表时间:2009-4-27 22:36:00    本帖已结帖!
楼主

点击下载附件

写了一个位图的操作类,找了不少的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;
}
第二次修改,文章中的两处错误。代码中的两处错误,实现也有稍微修改。

  最后修改于2009-12-21 15:20:00

 

签名档
[size=4][color=0000FF][size=2]自信在骨子里
谦恭于待人时[/size][/color][/size]
一个过分渴望被理解的人其实就是一个软弱的人, 勇往直前的力量来自斩钉截铁的决心,绝不是来自别人的理解.
     ▂▂▂           ▂▂▂     
  ◢████◣     ◢████◣  
 █ ⊙  ⊙ █     █ ⊙  ⊙ █  
 ◤  ◥◤  ◥     ◤  ◥◤  ◥  
◢▔▂▂▂▂▔◣ ◢▔▂▂▂▂▔◣
◤︼     ︼◥ ◤︼     ︼◥
 ╲▁▁▁▁╱    ╲▁▁▁▁╱  
   ╯╜  ╙╰      ╯╜  ╙╰  
发表时间:2010-7-15 21:36:00   
21楼
看帖回帖^_^

 

作者:hastings

专家分:30

级别:1

发表时间:2010-9-16 10:47:00   
22
LZ,你这里有问题的~~位图格式不止BITMAPINFOHEADER一种~~
还有你调色板里的:
        if (0<inBmp.bmpInfoH.biBitCount&&inBmp.bmpInfoH.biBitCount<=8)
            colorCount=(WORD)(pow(2,inBmp.bmpInfoH.biBitCount));
        else
            colorCount=0;
是不严谨的~~还要考虑biClrUsed字段的~~

 

 此帖被评30分
[首页] [上页]  [下页] [尾页]     共有 22 回帖 当前第 2 页(共2页 20帖/页)     跳转至第
回 帖 快速回帖 发 新 帖 刷新版面

版主管理:  删除此帖   转贴   置顶   取消精华   强制结帖   >>>进入管理页面