干货 软件 Rules & Tips
1. 遵守中国大陆相关法律法规
2. 严禁发布盗版软件
3. 严禁传播破解方法或工具
4. 严禁发布甩链接的下载信息
5. 提倡分享亲测好用的软件
6. 名称、版本、平台是必要信息

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

查看: 4977|回复: 3
冲赤 发表于 2015-6-9 15:52:08
不论是那种语言写的程序,最终生成的exe文件都可以改变其显示图标(就是一个ico文件),自己的exe程序当然想加一个有意义的图标。对于这个ico图标,也是有点学问的。搞不好,即使加了ico文件,生成的exe还是显示窗口图标,如下:

clipboard.png

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工具

Png2Icov1.0.zip (341.63 KB, 下载次数: 4, 售价: 2 Bit)
ZOE 发表于 2015-6-9 15:55:24
原来如此。不过我想不明白如果不是业内人指导这个有什么用?
 楼主| 冲赤 发表于 2015-6-9 16:01:06
PS高手,可以按需求自己制作ico!
leicheng 发表于 2016-10-8 19:19:18
赞一个,谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

虫部落 陕ICP备14001577号-1川公网安备 51019002003015号联系我们FAQ关于虫部落免责声明虫部落生存法则蛙先知 - AI 玩家社区 🚧

Build with for "make search easier" Copyright © 2013-2024. Powered by Discuz! GMT+8, 2024-4-24 07:07

快速回复 返回顶部 返回列表