ICO图标文件分析--程序图标异常

林羽轩 26天前 15

不论是那种语言写的程序,最终生成的exe文件都可以改变其显示图标(就是一个ico文件),自己的exe程序当然想加一个有意义的图标。对于这个ico图标,也是有点学问的。搞不好,即使加了ico文件,生成的exe还是显示窗口图标,如下:
ICO简介
图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域,在结构上图标其实和麦当劳的巨无霸汉堡差不多。出现这情况的根本原因是,计算机操作系统和显示设备的多样性,导致了图标的大小需要有多种格式。
ICO是Windows的图标文件格式的一种,可以存储单个图案、多尺寸、多色板的图标文件我们看到的文件夹,执行文件等都有不同的图标显示,并且当我们切换视图模式(包括Thumbnails,Tiles,Icons, List, Details)时,文件的图标会以"不同"尺寸显示,确切的说,应该是不同的图标文件(尺寸亦不同)。ico文件里面可以有多个不同的图标文件以适应不同的视图模式,并且这些图标文件通常按尺寸大小的顺序存放。windows XP/server 2003下支持的ico尺寸为16x16,32x32和48x48,vista/win7下则最多可以支持到256x256。

问题及其分析
之前发现一个问题,我给AutoIT3生成的exe加图标,生成的exe在win7下图标显示正常,在win8.1下,比较小的显示模式小可以看到
我设置的图标,但是比较大的显示模式下(直接放在桌面上),图标显示异常,exe显示的是窗口图标。遂想着如何解决这个问题,经过不懈搜索终于在一个博客中发现了类似的情况。原文博客。
问题关键在于ico文件中图标的顺序,XP和server 2003对顺序要求不高,无论是图标是按尺寸的正序还是倒序都可以正常显示,而然在vista/win7下却只能倒序,win8.1下没查到要求。

结论
不同的操作系统和不同的显示设备,在不同的显示模式下(包括Thumbnails,Tiles,Icons, List, Details),需要不同尺寸的图标。
如果操作系统在图标中找不到特定的图象格式,它总是采用最接近的图象格式来显示,比如把大小为48 x 48的图标缩小为24 x 24象素大小。当然,效果就差些了。某些版本OS对ICO文件里的图像尺寸顺序有一定要求。由于查不到不同版本windows对ICO图标的详细要求,再次无法提供。

制作ICO
ICO文件的原理该明白了,那么就得知道如何制作一个符合要求的ICO,以便加入自己的exe程序中。
一般人都是用工具转换,或者在线转换,二般人自己分析ICO文件格式,写个程序自己转换。

PNG转ICO工具
ICO在线转换1 ; ICO在线转换2
这家伙太懒了,什么也没留下。

最新回复 (0)