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
不信你们可以试下
16位bmp图获取RGB值怎么计算
答案:3 悬赏:80 手机版
解决时间 2021-02-13 09:59
- 提问者网友:暮烟疏雨之际
- 2021-02-12 14:10
最佳答案
- 五星知识达人网友:杯酒困英雄
- 2021-02-12 15:34
假设颜色是c
c & 0x1F 是蓝
c >> 5 & 0x1F 是绿
c >> 10 & 0x1F 是红
相应的
b | g << 5 | r << 10 就是颜色
那个数据应该是有问题的
只能说你搞错了
0x6408
555的话是r25g0b8
565的话是r12g32b8
c & 0x1F 是蓝
c >> 5 & 0x1F 是绿
c >> 10 & 0x1F 是红
相应的
b | g << 5 | r << 10 就是颜色
那个数据应该是有问题的
只能说你搞错了
0x6408
555的话是r25g0b8
565的话是r12g32b8
全部回答
- 1楼网友:话散在刀尖上
- 2021-02-12 17:46
对于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 了 ,怎么可能呢?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯