TIFF数据 保存为 BMP 颜色失真 保存为BMPbmp失真BMP 调色板 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 16 bit bmp没有调色板。按你在bitmapinfoheader中的设置,这是一幅16位彩色图,每个pixel 占16 bit(实际使用15bit,r,g,b分别占5bit,最高位bit未使用),而你的源图是16bit灰度图,每个像素只有一种灰度值,因此你转换时必须将16bit的灰度值缩减成5bit,然后分别复制到16bit bmp每像素相应的r,g,b上。颜色失真是必然的,因为是由65536种灰度缩小成32种灰度。 如果希望在16bit bmp中最大可能保留灰度值的精度,那么你的bmiHeader.biCompression必须设置成BI_BITFIELD, 然后在调色板的位置(即&bmi.bmiColors[0])放3个DWORD分别对应R, G, B颜色的mask, 然后将这3个mask设置成相同的值(即rgb的通道位置重叠),你可以尝试都设置成0xFFFF看看Windows是否能够正确显示。 我希望仍然能保持16位的深度,也就是65536颜色,应该怎么办呢?为什么BMP就不能用16位的呢?我也是2个字节保存的一个像素值呀。感谢回答。 我希望仍然能保持16位的深度,也就是65536颜色,应该怎么办呢?为什么BMP就不能用16位的呢?我也是2个字节保存的一个像素值呀。感谢回答。如果不能正确显示或存在某些像素显示错误,那么表示windows不支持16位深灰度,你只能想办法缩减成8位深度灰度值,可以直接在mask上做文章(比如设置mask=0xFF00),或者将mask设为0xFF然后复制像素时缩减每像素的灰度值。 我希望仍然能保持16位的深度,也就是65536颜色,应该怎么办呢?为什么BMP就不能用16位的呢?我也是2个字节保存的一个像素值呀。感谢回答。如果不能正确显示或存在某些像素显示错误,那么表示windows不支持16位深灰度,你只能想办法缩减成8位深度灰度值,可以直接在mask上做文章(比如设置mask=0xFF00),或者将mask设为0xFF然后复制像素时缩减每像素的灰度值。谢谢。我去试试,现在对这个还不是太熟,要边查资料边做。如果最后还是搞不定的话,那我就只有用CImage这种类库来显示了,这种类库显示的不是真,但是位深被改了,可能就是你说的那种原因吧,不支持16位深,因此被改成8位的了。我打算用类库显示图像,但是在计算图像某点像素的灰度值时,我使用原始数据来计算,目前只能这样了。感谢解惑。过两天来给分。 谁有 Visual C++数据库实用编程100例的资料啊。。发给我下,是中国铁道出版社 出的那本,谢谢。QQ46450548 如何让人物图片限制移动? 关于const声明的问题 关于GetOpenFileName这个函数的调用方法问题(急急急!!!) 如何实现在VC中单击按钮进入命令提示符......????(加一百分噢) 我想在win98中调用以前的16的DLL CListCtrl刷新的问题? 最简单的一个程序,在vc里连接出错,请问牛人们,怎么回事? 进程——内存映射 断点续传? 如何设置文本框和程序界面大小一致捏? 用VC++编写最短路径程序
为什么BMP就不能用16位的呢?我也是2个字节保存的一个像素值呀。
感谢回答。
为什么BMP就不能用16位的呢?我也是2个字节保存的一个像素值呀。
感谢回答。如果不能正确显示或存在某些像素显示错误,那么表示windows不支持16位深灰度,你只能想办法缩减成8位深度灰度值,可以直接在mask上做文章(比如设置mask=0xFF00),或者将mask设为0xFF然后复制像素时缩减每像素的灰度值。
为什么BMP就不能用16位的呢?我也是2个字节保存的一个像素值呀。
感谢回答。如果不能正确显示或存在某些像素显示错误,那么表示windows不支持16位深灰度,你只能想办法缩减成8位深度灰度值,可以直接在mask上做文章(比如设置mask=0xFF00),或者将mask设为0xFF然后复制像素时缩减每像素的灰度值。谢谢。
我去试试,现在对这个还不是太熟,要边查资料边做。
如果最后还是搞不定的话,那我就只有用CImage这种类库来显示了,这种类库显示的不是真,但是位深被改了,可能就是你说的那种原因吧,不支持16位深,因此被改成8位的了。
我打算用类库显示图像,但是在计算图像某点像素的灰度值时,我使用原始数据来计算,目前只能这样了。
感谢解惑。
过两天来给分。