RGB565与RGB555标志识别位图文件格式
近日从本地16比特位图读出象素彩色数据,并填充ANDROID的BITMAP数据。发现,使用CAVAS当屏幕显示,照片显示的颜色不正确,找了很多资料,原来发现两个原因:
1.将位图的颜色分量掩码弄错了,当BITMAPINFOHEADER.biCompression是BI_BITFIELDS,此时位图才为565格式的位图,掩码存放在原来调色板的位置,而当前读取的这张位图BITMAPINFOHEADER.biCompression是BI_RGB,此时位图应该为555的位图,所以掩码应该採用RGB555的掩码数据。
2.在把RGB555的位图颜色数据 转换为RGB888的数据时,首先将位图的数据像素值与颜色分量掩码进行与运算,然后因为RGB555是对颜色数据进行了有损的压缩编码,仅仅剩下了5位数据,而当转换为8位的原始数据时,必需要进行数据补偿,能够默认使用0进行不足的位数补偿,以达到8位的原始颜色分量长度,也有种说法。是採用5位数据的低几位进行数据填充,据说效果更好,失真更少。
biBitCount=16 表示位图最多有216种颜色。每一个色素用16位(2个字节)表示。这样的格式叫作高彩色,或叫增强型16位色,或64K色。
它的情况比較复杂,当biCompression成员的值是BI_RGB时,它没有调色板。
16位中。最低的5位表示蓝色分量,中间的5位表示绿色分量,高的5位表示红色分量,一共占用了15位,最高的一位保留。设为0。
这样的格式也被称作555 16位位图。假设biCompression成员的值是BI_BITFIELDS,那么情况就复杂了,首先是原来调色板的位置被三个DWORD变量占领,称为红、绿、蓝掩码。
分别用于描写叙述红、绿、蓝分量在16位中所占的位置。在Windows
95(或98)中。系统可接受两种格式的位域:555和565,在555格式下,红、绿、蓝的掩码各自是:0x7C00、0x03E0、0x001F,而在565格式下。它们则分别为:0xF800、0x07E0、0x001F。你在读取一个像素之后,能够分别用掩码“与”上像素值,从而提取出想要的颜色分量(当然还要再经过适当的左右移操作)。在NT系统中,则没有格式限制。仅仅只是要求掩码之间不能有重叠。(注:这样的格式的图像使用起来是比較麻烦的,只是由于它的显示效果接近于真彩。而图像数据又比真彩图像小的多,所以,它很多其它的被用于游戏软件)。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
RGB565与RGB555标志识别位图文件格式的更多相关文章
- 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练
人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练 MXNet 是一个轻量级.可移植.灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 ...
- 位图文件格式及linux下C语言来操作位图文件
说到图片,位图(Bitmap)当然是最简单的,它是Windows显示图片的基本格式,其文件扩展名为*.BMP.由于没有经过任何的压缩,故BMP图片往往很大.在Windows下,任何格式的图片文件都要转 ...
- BMP位图文件格式详解及编程建议
BMP文件渊源流长,虽然对JPG.PNG等格式图像文件来说,确实有点土,但是毕竟BMP文件格式相对简单,容易理解,至于BMP众多的位图格式也不能责怪微软,主要是早期谁也没料到图片技术会发展的这么快,而 ...
- TSR交通标志检测与识别
TSR交通标志检测与识别 说明: 传统图像处理算法的TSR集成在在ARM+DSP上运行,深度学习开发的TSR集成到FPGA上运行. 输入输出接口 Input: (1)图像视频分辨率(整型int) (2 ...
- DIB位图文件的格式、读取、保存和显示(转载)
一.位图文件结构 位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据 1.位图文件头:BitMapFileHeader.位图文件头主要用于识别位图文件.以下是位图文件头结构的定义: type ...
- BMP文件格式分析
前两天要做一个读取bmp文件的小程序,顺便查找了一些关于BMP格式的文章,现在post上来. 简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运 ...
- Windows下bmp文件格式
6.1 BMP文件格式 6.1.1 简介 位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式.Window ...
- BMP文件格式及读写
转 http://blog.csdn.net/pkueecser/article/details/5579604 http://blog.csdn.net/pkueecser/article/deta ...
- 浅析BMP位图文件结构(含Demo)
浅析BMP位图文件结构(含Demo) 作者:一点一滴的Beer http://beer.cnblogs.com/ 关于BMP位图格式在网上可以找到比较详细的相关文档,有兴趣的可以搜索标题为“BMP ...
随机推荐
- ztree实现左边动态生成树,右边为具体信息功能
页面原型图: 图片.png 功能需求:点击左边树上的子节点,像后台发送请求,将请求到的信息展示在右边的表单里面 前端代码实现: 引入css文档: <link rel="styleshe ...
- 【15.07%】【codeforces 625A】Guest From the Past
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- winscp ppk无需密码登录(失败)
http://blog.csdn.net/catoop/article/details/8284803 按上文将Linux下生成的密钥文件id_rsa通过puttygen生成对应的.ppk文件,用wi ...
- 【b802】火柴棒等式
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴 ...
- Android onKeyDown监听返回键无效
当我们的Activity继承了TabActivity,在该类中重写onKeyDown是监听不到返回键的, 具体解决方法如下: 重写dispatchKeyEvent /** * 退出 */ @Overr ...
- php输出文件,数组
file_put_contents('C://zll.txt',var_export($data,true));//输出数组 file_put_contents('C://zll.txt','你好啊' ...
- 选择性编译代码:如 #ifdef __IPHONE_7_0
选择性编译代码: 选择性编译代码和选择性运行代码是不一样的,区别在于: 1.选择性编译代码是在硬件或者系统不支持的情况下不会对该段代码进行编译,也就不会由于不兼容的问题导致报错 #import < ...
- 2015-07-30Java 错题
2 推断对错.在java的多态调用中,new的是哪一个类就是调用的哪个类的方法. 正确答案: A 对 错 解析: java多态有两种情况:重载和覆写 在覆写中.运用的是动态单分配.是依据new的类型确 ...
- 【t096】树的序号
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 我们可以用下面的方案给二叉树标号: 空树的序号为0. 只有一个根结点的树序号为1. 所有包含m个结点的 ...
- fiddler AutoResponder(文件代理)
测试网站https://www.meishij.net/ 目标:使用fiddler完成图片的替换 1.首先找到图片地址,然后在fiddler中查找对应图片 2.将对应的图片请求拖入到fiddler的A ...