| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 972 人关注过本帖
标题:800X600X256色下24K真彩色BMP图片为什么显示不出来?(本子程序256色BMP图片 ...
收藏  订阅  推荐  打印 
RockCarry
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:401
积分:5558
注册:2005-8-5

上面讲的是抖动处理的方法,当然也可以使用最佳匹配的算法,以获得更好的显示效果。
方法如下:
1. 统计一个bmp中各个颜色出现的频率
2. 将颜色频率按从高到底进行排序(sorted color table - SCT)
3. 将显示器256色的调色板设置为SCT表中的前256项 (将这256项记为SCT256表)
4. 对原24bit bmp中的每个像素点进行如下处理:
根据该像素的RGB值,在SCT256中查找一个最佳匹配的颜色值,并取得该颜色值在SCT256中的编号(8bit)
将这个8bit的编号作为颜色值,绘制到屏幕的相应位置
5. 正确处理完24bit bmp中的每一个像素,就ok了

这实际上就是将24bit色bmp转换为256色bmp的一种简单算法,效果也不错,原理也很简单。选择最佳匹配色也很容易,就是选泽颜色空间中,距离最小的,距离函数直接使用欧式距离就非常理想。这个算法是我自己独立思考出来的,可以说是原创。

RockCarry
2007-2-12


[此贴子已经被作者于2007-2-12 11:43:36编辑过]

2007-2-12 11:34
ba_wang_mao
Rank: 3Rank: 3
来自:成都理工大学
等级:中级会员
帖子:282
积分:3028
注册:2006-11-7

谢谢 RockCarry,我试试

多年以来还在MSDOS、单片机下搞嵌入式编程,对WINDOWS编程一窍不通,很想了解WINDOWS下病毒编程技术。
2007-2-13 08:32
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.089977 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved