精简ICO图标可减小EXE程序文件大小
使用VS2010编写的小程序,两百行不到的代码,生成的可执行程序却有3百多KB!心想不该如此之大才对。在下次编写小程序的时候,在刚建立解决方案的时候,生成的默认窗口的EXE程序才8KB!将之前程序的源代码复制进去,程序大小也才40多KB!和之前的3百多KB相差也太多了。
于是进行了一番实验,结果如下:
| 默认解决方案 | 更换图标后 | |
程序的左上角图标 |
| ||
EXE文件的图标 |
| ||
EXE文件大小 |
而更换的图标文件信息如下:
可见,设置了两处的图标后,文件的大小刚好是两个图标文件的大小。为此要想精简EXE文件的大小,就必须将图标精简到最小。
通过搜索相关资料,找到了Windows支持的标准图标大小。
意思说:只要一个图标文件中包含标准尺寸的图标即可。而通过软件Axialis ICOWorkshop 打开什么的图标,发现里面包含了从16X16 到128X128的各个尺寸,
于是只要删除非标准尺寸的图标,只保留16到64的尺寸,即精简了图标的大小。从原来的152KB,到现在的才32KB了!
通过查看VS2010的属性窗口中得知,窗体左上角图标只需要一个32X32尺寸的图标即可。
于是只保留了32X32尺寸的图标,最后得到的另一个文件大小就才4KB了!
最后,将软件的左上角图标,和EXE文件图标分别设置为4KB的图标文件,和32KB的图标文件,重新生成的文件大小为:
至此,得出IDE并没有帮我们精简图标的任务的结论。所以当想要精简程序文件大小的时候,不妨从精简相应图标的文件大小开始。
By:AsionTang2011年7月10日 15:34:45
事后无意中研究了一番Windows自带的图标都包含了多少种大小格式,才发现在Win7下的系统图标中,仅仅包含16(8x2),32(8x4),48(8x6),256(8x32)四种尺寸!当然,官方的还包括了三种色彩规格,256色,16色,32位色彩的,总共1个图标包含10套不同色彩的不同尺寸图标。看来24和64的尺寸仅做支持,不做官方使用嘛,呵呵。于是精简的图标可以只剩下三种尺寸格式,体积就又减少了很多!
本来程序左上角图标应该只需要16x16尺寸的即可,但是后来发现在系统任务栏,和Alt + Tab切换的时候程序的图标是32x32的。所以,左上角图标可以有两个方案:
1、只放32尺寸的图标;
2、同时放16和32尺寸的!
这里一直都未讨论图标色彩模式,都选择了最高的32位色彩,因为当今的电脑系统已经很少会用到16位色彩,或者更低的256色彩模式了吧,因此,既然不是官方的图标,那么就可以只需制作32位色彩(RGB)的恰当尺寸的图标即可!
当然,本文一切仅作个人参考。
添加:AsionTang2011年7月30日 01:39:53