算法:8位(256色)的图像 如何 转换成 24位

chenbin200818 2010-09-10 05:46:21
纯c实现, 如何实现 8位(256色)的bmp 转换成 24位的

只需要 转换 公式

我自己转换 后发现 图像 失真比较厉害 以下是我的转换公式
unsigned char B, G, R;
原始 像素 为 char color;
B = color >>5;
G = (color<<3)>>6;
R = (color<<5)>>5;


...全文
351 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmshy2128 2010-09-12
  • 打赏
  • 举报
回复
bmp文件格式:

文件头 + 图像头 + 调色板 + 颜色数据值
chenbin200818 2010-09-12
  • 打赏
  • 举报
回复
看来 是我没搞清楚问题

那该如何 建立 个256个颜色的映射表呢 我很不清楚
麻烦 告诉我 一下
我不是vc程序员,是做c嵌入式的, 对这个真的不清楚
用户 昵称 2010-09-11
  • 打赏
  • 举报
回复
查出来调色板然后就是24位了。
mLee79 2010-09-11
  • 打赏
  • 举报
回复
8位色一般都有调色板...
zmshy2128 2010-09-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 chenbin200818 的回复:]
是我的转换公式
unsigned char B, G, R;
原始 像素 为 char color;
B = color >>5;
G = (color<<3)>>6;
R = (color<<5)>>5;
[/Quote]

你这公式从那来的??????????????????

8位(256色)的bmp 转换成 24位。
是8位的灰度图像吗?如果是的话,那么 B = G = R = color; 即可。

如果不是,查找颜色表
zenny_chen 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 chenbin200818 的回复:]
纯c实现, 如何实现 8位(256色)的bmp 转换成 24位的

只需要 转换 公式

我自己转换 后发现 图像 失真比较厉害 以下是我的转换公式
unsigned char B, G, R;
原始 像素 为 char color;
B = color >>5;
G = (color<<3)>>6;
R = (color<<5)>>5;
[/Quote]
楼主在处理的时候不能用char,应该用unsigned int
因为像第二个,你左移3位后,后面再右移,由于char是带符号的,因此这里将用算术右移,把符号都移进来了,呵呵。
像素的值如果被表达为整型的话,应该用无符号表示。一个分量若是8位的话就是0到255。
zhuyi108 2010-09-10
  • 打赏
  • 举报
回复
数字格式换下试试@
Trinx 2010-09-10
  • 打赏
  • 举报
回复
没搞过,先顶贴了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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