位图文件定位

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

调色板所空间大小未知,对于一个已知的位图文件该如何定位到位图数据处呢?
如果用C程式的方式该怎么显示位图呢?
...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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));
}

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧