BMP 8位 颜色表如何得到

langtaosha1238 2014-07-25 03:55:08
看了网上一些资料,8位的BMP颜色表是根据图像数据得到的,请问如何才能根据图像数据得到颜色表,一个图的颜色表是不是固定的,8位的颜色表只有256项,而每个颜色就有256种,如果我获取的RGB颜色值不在颜色表中怎么搞。
...全文
778 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿呆_ 2014-07-26
  • 打赏
  • 举报
回复
你可以建立一个简单的颜色表,比如你的表中只包含8种不同的红色,4种不同的绿色,8种不同的蓝色,组合rgb后即可以得到256种颜色的color table, 当转换24位bmp时, 读取24位bitmap中每像素的r,g,b值,将它们分别映射成你的颜色对照表中的值,比如你的对照表中的绿色只有(0,63,127,255)4种,读到的绿色比如是74,你就将它映射成63, 同样处理红和蓝,用最终生成的rgb搜索color table, 然后用相应的color table index替换8位bmp中相应像素,遍历24位bmp所有像素后即可得到8位bmp了。
langtaosha1238 2014-07-26
  • 打赏
  • 举报
回复
引用 4 楼 Idle_ 的回复:
[quote=引用 2 楼 langtaosha1238 的回复:] 多谢指教,还想请问您移完后相应像素是指的什么,像素点这么多,index只有256个怎么替换,请问这样做的原理是什么?
24位色每个像素都有r,g,b啊,位移的方法就是将r,g,b 颜色只保留高位bit然后作为color table中的颜色[/quote] 您好,是这样的,我现在有一个prn文件里面存的是图片的RGB值,我想把这个RGB用8位的BMP显示,我这个颜色表该怎么做。
阿呆_ 2014-07-25
  • 打赏
  • 举报
回复
引用 2 楼 langtaosha1238 的回复:
多谢指教,还想请问您移完后相应像素是指的什么,像素点这么多,index只有256个怎么替换,请问这样做的原理是什么?
24位色每个像素都有r,g,b啊,位移的方法就是将r,g,b 颜色只保留高位bit然后作为color table中的颜色
阿呆_ 2014-07-25
  • 打赏
  • 举报
回复
原理其实就是减色,将24位色缩减成8位色,那么r,g,b分别用3,2,3 bit表示,比如将8位的r映射到224-255之间,简单的方法就是<224的颜色都置0,所以说效果不怎么样。
langtaosha1238 2014-07-25
  • 打赏
  • 举报
回复
多谢指教,还想请问您移完后相应像素是指的什么,像素点这么多,index只有256个怎么替换,请问这样做的原理是什么?
阿呆_ 2014-07-25
  • 打赏
  • 举报
回复
一种很简单的方法,当然效果不怎么样,真彩色图片的每像素的r,g,b分别>>5, >>6, >>5,然后再<<5, <<6, <<5, 存入color table,然后将相应像素替换成color table当前的index. 好点的方法可能先需要统计所有的r,g,b然后看整体图片偏向哪种颜色再设置不同的r, g, b位移值,或者事先保留一批常用颜色,剩下的colortable再计算

19,470

社区成员

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

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