lp返回一个dib数据指针,不包含头文件数据,如何取出他的像素值?

pop155 2003-08-20 11:44:52
例如:
图像大小:352*288(16位)
BYTE* lp 这个指向它的纯数据指针。大小(202752字节)
如何利用lp取出它的所有像素存入到 BYTE* Bpixels
...全文
37 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pop155 2003-08-21
  • 打赏
  • 举报
回复
还是这个呀!16位的如何转成24位的?
主要的是那16位的每5位数据如何取?
例如数据指针是lp,
slimsymphony 2003-08-21
  • 打赏
  • 举报
回复
晕,上面一楼的不就是教你如何做这件事吗?
//16位转24位,假设为555格式
WORD c;
BYTE r,g,b;
c=数据;
r=(c&0x7C00U)>>10;
g=(c&0x03E0U)>>5;
b= c&0x001FU
就是这样啊
slimsymphony 2003-08-20
  • 打赏
  • 举报
回复
不愧是3星,说得很清楚
16位的位图有几种形式,比如555,565等,
一般前者常用些
因为每个像素占用的空间是3字节
zyl910(910:分儿,我又来了!) 可能是假设你是要把图像转化成24位(4字节一个像素),其实这样对于一般操作会更方便点没错
然后你就找上面的办法做就好了(不知道zyl910(910:分儿,我又来了!) 是不是这个意思我瞎解释,呵呵)
因为你没说清楚到底要做什么?
如果只是同类指针的简单的转移,....这个问题问的也没什么意义了吧
——————————————————————————————————
共同学习,共同进步
pop155 2003-08-20
  • 打赏
  • 举报
回复
??不是很明白,能不能详细说说呀?
zyl910 2003-08-20
  • 打赏
  • 举报
回复
已经知道大小和位数还不好办

自己写个二重循环转换数据不就的了


//16位转24位,假设为555格式
WORD c;
BYTE r,g,b;
c=数据;
r=(c&0x7C00U)>>10;
g=(c&0x03E0U)>>5;
b= c&0x001FU
pop155 2003-08-20
  • 打赏
  • 举报
回复
谢谢大家,我的理解对不对?
16位图是每2字节表示一像素,即8*2:16
表示rgb值是每5位为一分段,5,5,5 (这就是16为图像表示方法)
24位图是每3字节表示一像素,即顺序的3个字节表示为bgr
所以说16位图字节大小肯定是这张位图像素值的2倍,即:宽*高*2
24位图字节大小肯定是这张位图像素值的3倍,即:宽*高*3

不过16位转化为24位该如何做啊?给我点提示,谢谢。

——————————————————————————————————
共同学习,共同进步

19,468

社区成员

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

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