永发信息网

16位bmp图获取RGB值怎么计算

答案:3  悬赏:80  手机版
解决时间 2021-02-13 09:59
16位bmp图获取RGB值怎么计算
我从一张16bit图中读取到一个象素点的数据是0x6408(格式应该是555的),实际是r=16,g=25,b=33,这2个怎么计算的,写清楚计算过程。

1楼的,我要的是数据0x6408,计算出r=16,g=25,b=33的过程

数据应该是没问题的 我直接用UltraEdit查看的,也同通过UltraEdit修改了数据后看哪个象素点改变才确定实际RGB值为r=16,g=25,b=33

确实33的话要6bit,但是颜色是0-255,也就是r=255,g=255,b=255时,实际要24bit,但要保存为16bit,肯定是经过某种计算后才行的,不来要怎么保存

我刚用photoshop新建了1X1象素的图,点上r=16,g=25,b=33的颜色,保存为16bitbmp,UltraEdit查看也是这个数据0x6408

不信你们可以试下
最佳答案
假设颜色是c

c & 0x1F 是蓝
c >> 5 & 0x1F 是绿
c >> 10 & 0x1F 是红

相应的

b | g << 5 | r << 10 就是颜色

那个数据应该是有问题的

只能说你搞错了
0x6408
555的话是r25g0b8
565的话是r12g32b8
全部回答
对于hbitmap位图是有办法的。 假设要处理的位图是hbitmap hbitmap; 代码如下: cbitmap m; m.fromhandle(hbitmap); bitmap bt; getobject(sizeof(bt),&bt); unsigned char *px=new unsigned char [bt.bmheight*bt.bmbmwidthbytes]; m.getbitmapbits(bt.bmheight*bt.bmbmwidthbytes,px);//读取位图数据 int pixelbytes=bt.bmbitspixel/8;//每一个像素占字节数 int rgb_b; for(y=0;y
  • 2楼网友:风格不统一
  • 2021-02-12 17:02
绝对是错误的 b=33 要用 6bit 了 ,怎么可能呢?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯