读取单色位图的问题

guohua24 2006-09-18 12:09:15
下面是读取单色位图i,j处的数据的函数,请帮忙看看。现在的问题是出现许多0
unsigned char CDib::GetData(int i, int j)
{
ASSERT(i>=0 && i<m_pBIH->biWidth);
ASSERT(j>=0 && j<m_pBIH->biHeight);

int index = (m_pBIH->biHeight - 1 -j) * (m_pBIH->biWidth) + (i);

unsigned char ret;
if(m_pBIH->biBitCount == 1)
{
int data = m_pDibBits[index/8];
unsigned char mod = index%8;
ret = data&(128>>mod);
ret = ret>>(7 - mod);
}
return ret;

}
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_feeling 2006-09-23
  • 打赏
  • 举报
回复
可以这样处理:
unsignde char maskbit[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

if(data&maskbit[mod])
{
ret = 1;
}
else
{
ret = 0;
}


jixingzhong 2006-09-21
  • 打赏
  • 举报
回复
unsigned char mod = index%8;
ret = data&(128>>mod);
ret = ret>>(7 - mod);
===================
ret = data&(128>>mod);
ret = ret>>(7 - mod);
这两个操作合成的结果似乎就只能是 0 了 ...
ret = ret>>(7 - mod); or ret = ret<<(7 - mod); ?
(移位方向 ?)
jixingzhong 2006-09-21
  • 打赏
  • 举报
回复
128 改 256,
否则位操作对数可能为0, 得到的结果就都是 0 了 ...
asdwwe2004 2006-09-20
  • 打赏
  • 举报
回复
128改成256
gh_xiong555 2006-09-18
  • 打赏
  • 举报
回复
路过,不好意思 ,对图形不懂
coolgod 2006-09-18
  • 打赏
  • 举报
回复
帮顶,接分!

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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