如何将24为位图转化为8位的?

tenyears 2003-10-16 08:56:40
现在在用vb6做程序,需要实现位图转换的功能,即将24位,32位,16位的彩色图片转化为8位的位图,不知如何处理,请大家帮忙。
...全文
239 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2003-10-17
  • 打赏
  • 举报
回复
在http://expert.csdn.net/Expert/topic/1538/1538596.xml?temp=.8344385里
我贴了:已知hDC,把图象保存为256色、16色、2色、256级灰度bmp图象的方法,参考一下
AresChen 2003-10-16
  • 打赏
  • 举报
回复
首先要确定你是要转到黑白的图片,还是把图片颜色的精度降低。
如果是转黑白比较简单,24位是RRGGBB(或者BBGGRR,方法一样),只要用RR+GG+BB再除以3就完事了。32位的处理类似,只是多了一个Alpha色,可以不去管。
降低精度的话,就比较麻烦了。8位颜色无法均摊到3个颜色上,所以你首先要确定哪两个颜色占3位,哪个颜色占2位,然后按照256(8位,24位的一个颜色的数量)到8(3位,8位颜色中的数量),按比例缩小,再拼装到一个8位数中。这样你所获得到的一个8位数,并不是一个颜色数,所以你还需要建立一个表,去记录原先的每一个值转换后的值是多少,通过这个表,你可以知道每一个8位数在原先的图片中的位置(因为精度降低了,FF和FE变成一个数了),比如32这个8位数,通过这个表你可以检索到原先位于屏幕的p1、p2、p3这3个点,在把这3个点的颜色值相加求平均,你就得出了精度降低以后,32这个数所代表的颜色值是多少了。以此进行,知道256个数所代表的颜色值全部求出来,然后在往调色板中去添加这些颜色,然后再~~~~
呵呵,后续的查msdn吧,我实在懒的写了。不过我记得API中有一个函数是图形转换的,你可以查查看(别打我啊,我也是写了这么半天才想起来)
jintianatxd 2003-10-16
  • 打赏
  • 举报
回复
不懂.
我想应该是bmp文件的格式问题和颜色的取近值的问题.
帮你up.
kunbone 2003-10-16
  • 打赏
  • 举报
回复
不懂,关注
subzero 2003-10-16
  • 打赏
  • 举报
回复
提供一个思路。
颜色数肯定要减少,需要计算出源图的所有重要颜色并取前256个写入调色板,其他按相似度大小向已经得出的调色板靠拢

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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