游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1039|回复: 1

求助:读取BMP的像素时出错,高人指点下

[复制链接]

11

主题

16

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2006-10-14 16:56:00 | 显示全部楼层 |阅读模式

typedef struct
{
    long imageSize;
    long blank;
    long startPosition;
   
}BmpHead;

typedef struct
{
    long    Length;
    long    width;
    long    height;
    WORD    colorPlane;
    WORD    bitColor;
    long    zipFormat;
    long    realSize;
    long    xPels;
    long    yPels;
    long    colorUse;
    long    colorImportant;
       
}InfoHead;


struct CPosition
{
  int x;
  int y;

};

CPosition *Pos = NULL;

void LoadBMP(char *FileName)
{
    BmpHead  headBMP;
    InfoHead infoHead;

    FILE* p;
    char* filename = FileName;
    p = fopen(filename,"rb");
    if (p == NULL)
    {
        return;
    }

    fseek(p,2,SEEK_CUR);
    fread(&headBMP,1,12,p);
    fread(&infoHead,1,40,p);

    if (infoHead.colorUse != 0)
    {
         fclose(p);
         MessageBox(NULL,"This is not a binarized BMP file.","ERROR",MB_OK);
    }

     long w=infoHead.width;
     long h=infoHead.height;

     long nData = infoHead.realSize;
     BYTE* pColorData = new BYTE[nData];
     fread(pColorData,1,nData,p);

         Pos = new CPosition[nData];

         int Pixel = 0;
         int a = 0,b=0;
         int  bmpSIZE = 0;
         for(int i=0; i<h; i++)
         {
                 for(int j=0; j<w; j++)
                 {
                         Pixel = pColorData[w*(h-i)+ j];

                         if(Pixel == 0)
                         {
                                  Pos[bmpSIZE].x = j;
                                  Pos[bmpSIZE].y = i;
                                  bmpSIZE++;
                         }
                 }
         }

         if( pColorData )
         {
                 delete []pColorData;
                 pColorData = NULL;
         }

         int leftData = 0;
    char ch = 0;
    while (!feof(p))
    {
        fread(&ch,1,1,p);
        leftData++;
    }
  
    if(!fclose(p))
    {
     }

}



Pos用于存储符合要求的像素的位置,但在数组的开头和结尾保存的数据不正确,是哪里出了问题?哪位哥们知道的说一下

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2006-10-14 17:38:00 | 显示全部楼层

Re:求助:读取BMP的像素时出错,高人指点下

在我的印象中,你好像差一个 RGBQUAD这样一个结构。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 15:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表