带你了解ico图标文件格式
作者:本站整理 时间:2015-04-07
现在有很多图标采用的都是ico格式,ico图标文件可以存储单个图案,也可以存储多尺寸、多色板。下面我们就来了解下ico图标文件格式构成。
图标文件格式
图标文件(*.ico)由图标文件头、图片入口数据和图片数据三个部分组成,这三个部分的具体结构如下:
1. 图标文件头
图标文件头包括三个部分6个字节,他们分别是
数据类型
字节
含义
说明
WORD
2
保留字段(wReserved)
必须0
WORD
2
文件类型(wType)
必须1
WORD
2
图片数量(wCount)
表示该图标文件包含多少个图片
2. 图片入口
接下来是wCount个“图片入口”数据。每个“图片入口”数据结构如下:
数据类型
字节
含义
说明
BYTE
1
图像宽度(bWidth)
单位:像素。256px的图片该值为0
BYTE
1
图像高度(bHeight)
同上
BYTE
1
颜色数(bClrCount)
不重要
BYTE
1
保留字段(bReserved)
必须为0
WORD
2
平面数(wPlanes)
一般为1
WORD
2
比特数(wBitCount)
颜色深度,取值4位、8位、24位和32位
DWORD
4
数据大小(dwImageSize)
对应图片数据占用的字节数
DWORD
4
数据位置(dwOffset)
对应图片数据在文件中的位置
3. 图片数据
对于256X256像素的图片,在文件中存储的格式是PNG,只要将整个PNG文件写在数据区就可以了,对应前面的图片入口的数据大小(dwImageSize)也是PNG文件的大小。但是XP操作系统不认该图片。
对于其他图片,该区域存放了一个目标颜色深度(wBitCount)的数据位图后面跟一个对应的遮罩位图。系统在绘制图标时会先将遮罩位图与目标设备“与”拷贝(SRCAND),然后在把数据位图与目标设备“异或”拷贝(SRCINVERT)。
数据位图的颜色深度可以是4位16色、8位256色、24位真彩色或32位带Alpha通道。需要注意的是就算是32位带Alpha通道的位图也是需要遮罩位图的。
遮罩位图是一个1位颜色深度的2值位图,有图像的位置填0,透明的位置填1。
数据位图的结构与普通位图结构基本相似,但是缺少14位的位图文件头。具体包含位图信息头、颜色表(只有4位和8位的位图才会有,4位的位图颜色表长度为16X4=64字节,8位的位图颜色表长度为256X4=1024字节)和数据区。
位图信息头结构如下:
数据类型
字节
含义
说明
DWORD
4
结构大小(biSize)
固定为40
LONG
4
图像宽度(biWidth)
单位:像素
LONG
4
图像高度(biHeight)
单位:像素。由于还有遮罩因此要X 2
WORD
2
平面数(biPlanes)
一般为1
WORD
2
比特数(biBitCount)
颜色深度,取值4位、8位、24位和32位
DWORD
4
压缩(biCompression)
一般为0
DWORD
4
数据大小(biSizeImage)
LONG
4
分辨率(biXPelsPerMeter)
LONG
4
分辨率(biYPelsPerMeter)
DWORD
4
使用颜色(biClrUsed)
DWORD
4
重要颜色(biClrImportant)
获取数据位图可以用如下办法:
先利用CImage类创建一个目标大小和颜色深度的位图。注意:4位和8位的位图需要设置颜色表,不然无法从源图片复制数据,颜色表可以采用固定的数据。32位位图需要开启Alpha通道,不然无法复制Alpha通道的数据。
然后利用CImage::GetDC、CImage::ReleaseDC、CImage:: GetPixelAddress和CImage::Draw等函数从源图复制图像数据到该位图。
接着将该位图保存到一个临时位图文件中。从该文件中读取。
相关文章
相关推荐
-
FinePrint 8.30(缩印打印机)
-
CloneSpy 3.21(同名文件扫描专家)
-
神聚合绿色版 v1.0
-
BSPlayer安装版 V2.69
-
Restore Point Creator(系统还原软件)官方版 v5.3.1
-
Adobe Photoshop CC 2017 32位官方版 v18.0
-
BoBo娱乐客户端官方版 v2.2.2.1
-
腾讯TIM官方电脑版 V3.3.0.21970
-
甜椒刷机助手v3.6.0.5官方版
-
子网掩码计算器 1.2 绿色版(计算工具)
-
小飞信迷你飞信(飞信辅助工具) V2.0 Beta6绿色版
-
天行广告防火墙 V3.4.1208.3官方版(广告拦截)
-
蓝蚁音效2015 2.13(语音增强软件)官方正式版
-
云图TV电视直播电脑版 v3.6.7
-
啄木鸟相册下载器 V6.3.0.6官方版(下载工具)
-
progdvb卫星电视V7.08.6(视频录制工具)免费版