位图文件定位

qingtian2006 2006-04-19 10:27:21
我知道位图结构表如下:
位图文件结构表
位图文件头 14 字节
位图信息头 40 字节
彩色表(调色板) 4N 字节
位图数据 x 字节

调色板所空间大小未知,对于一个已知的位图文件该如何定位到位图数据处呢?
如果用C程式的方式该怎么显示位图呢?
...全文
131 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qingtian2006 2006-04-19
我是新手,再问一下
lpDIB为指向位图的指针是这样得到的吗?
根据文件名反位图文件读入缓冲而lpDIB就是缓冲的指针,不知是不是这样的
  • 打赏
  • 举报
回复
soaroc 2006-04-19
通用做法:
lpDIB为指向位图的指针。
先获取颜色数:
WORD DIBNumColors(LPBYTE lpDIB)
{
WORD wBitCount; // DIB bit count
DWORD dwClrUsed;
dwClrUsed = ((LPBITMAPINFOHEADER)lpDIB)->biClrUsed;
if (dwClrUsed)
return (WORD)dwClrUsed;
wBitCount = ((LPBITMAPINFOHEADER)lpDIB)->biBitCount;
// return number of colors based on bits per pixel
switch (wBitCount)
{
case 1:
return 2;

case 4:
return 16;

case 8:
return 256;

default:
return 0;
}
}

//再获取调色板大小:
WORD PaletteSize(LPBYTE lpDIB)
{
// calculate the size required by the palette
return (DIBNumColors(lpDIB) * sizeof(RGBQUAD));
}
最后获取指向数据的指针:
LPBYTE FindDIBBits(LPBYTE lpDIB)
{
return (lpDIB + *(LPDWORD)lpDIB + PaletteSize(lpDIB));
}

  • 打赏
  • 举报
回复
相关推荐
发帖
图形处理/算法
加入

1.9w+

社区成员

VC/MFC 图形处理/算法
申请成为版主
帖子事件
创建了帖子
2006-04-19 10:27
社区公告
暂无公告