Windows 10在所有DPI设置下的所有图标分辨率是什么?格式是什么?像素艺术作为图标?开始菜单中的大尺寸图标适用于中号磁贴吗?

9

直接跳到答案部分,问题部分有些推测和错误。答案基于实验,准确无误。

我曾经长期使用一个单一的png包装的256px ico文件作为我的Visual Studio项目图标,而且它运行良好,因为这些图标的缩放效果很好,占用的空间也很小,在此之前我并不太在意。

但现在我有一个需要“保持边缘清晰”的图标,它是“像素艺术”。 如果我使用256px版本构建,则缩小效果非常糟糕,如果我使用16px构建,则放大效果稍微好一些,但还不够好。所以我的问题是:

  1. 我必须生成哪些大小的图标才能合并为ico文件(我不关心win7之前的预设图标)?

  2. 如果我得到了该列表,是否需要为高dpi设置生成1.25x、1.5x和2.0x版本?

  3. 最后,一些应用程序(如firefox)在开始菜单中有一个大的图标,位于中等大小的正方形块内,我的应用程序在中心有一个较小的图标,就像Visual Studio一样,如何将一个大的图标放入开始菜单中等大小的正方形中?

我找到了答案:不幸的是,VS说:VisualElements在Windows Presentation Foundation(WPF)项目中不受支持。有解决这个问题的方法吗?

我查看了一下,并收集了可能的尺寸@1x(96DPI):
16、20、24、30、32、40、48、50、64、128、150、256、512、768
这些大多数是从Which icon sizes should my Windows application's icon include?收集来的。

虽然不算太糟糕,但如果加上1.25x、1.5x、2.0x,那么我们得到的就是:
16、20、24、25、30、32、36、38、40、45、48、50、60、62、64、72、75、80、96、100、128、150、160、188、192、225、256、300、320、384、512、640、768、960、1024、1152、1536 在我的情况下,它会生成一个500k的ico文件,而且似乎最大分辨率可以放入ico文件中的是1024,所以我的图标会被像素化,因此使用png压缩效果非常好,文件大小约为500k。

我还创建了一个ico,其中所有分辨率都为RGBA,并且每个分辨率都有其大小标记,因此您可以看到哪个Windows在使用哪个dpi设置。您可以从这里下载并在vs项目中使用它进行测试。
据我所知,256px以下的所有内容都不能进行png压缩,这对吗?
我需要所有这些尺寸才能保留完美的像素图标吗?只有32bit(RGBA)的PNG是否可以?我希望不需要包括其他深度。
在我按照规范编写ico编写器之后,我意识到png可以具有0的分辨率,因为x或y有1个字节可用(但我从未见过非方形的ico,也许光标可以是非方形的),在这种情况下,可能会使用文件中第一个具有零分辨率的图像...这不确定,但我认为它离真相不远。请参阅图像。重新调整比例问题仍然使我感到困惑,如果我明天有时间,我会测试一下。完美的像素图标似乎是不可能完成的:只有一个图像可以重新调整为高于256px的任何尺寸。

1
很高兴看到你在努力提出问题,但请注意,过多的编辑会频繁地将问题推回主页,从而取代其他问题,可能会阻止它们得到应有的关注。设置悬赏以吸引更多关注是正确的做法,所以以后就采用这种方法吧。 - Bhargav Rao
1
我知道,但是我没有足够的声望,对此感到抱歉。不过我已经回答了这个问题。谢谢你的建议。 - z4k
2个回答

25

答案:

ICO文件中256像素以下是否接受PNG格式?
微软表示,256像素以下的大小应该是一个没有前14个字节的BMP。但至少在Windows 10中,答案是YES。

可以将大于1024像素的图像添加到ICO文件中吗?
可以。只要它是PNG格式,它可以任意大小。
请注意,“255像素以上的一个图标”的限制:
你只能添加一个大于255像素的图像(你可以添加更多,但Windows只会读取ICO头中第一个图像块,分辨率为0,0)。该格式为每个维度指定了1个字节。请参见表#2。

包括所有DPI设置的哪些尺寸?
Windows 10使用以下图标尺寸(参见下表):
16、20、24、28、30、31、32、40、42、47、48、56、60、63、84和一个大于255像素的图标。

请注意,Windows RT应用程序不使用ICO文件,它们使用PNG或字体。这来自Firefox的源代码:

<Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
    <VisualElements
      ShowNameOnSquare150x150Logo='on'
      Square150x150Logo='browser\VisualElements\VisualElements_150.png'
      Square70x70Logo='browser\VisualElements\VisualElements_70.png'
      ForegroundText='light'
      BackgroundColor='#0996f8'/>
</Application>

那么,Firefox如何在开始菜单中拥有一个大的图标呢?
这是通过在将快捷方式添加到开始菜单之前,向exe目录中包含上述文件实现的。 这篇文章解释了具体方法。我的应用程序有一个示例。
Results

如果您想为Windows 10创建图标,最好使用我的工具和Photoshop(或类似的软件),而不是其他任何编辑器。我尝试过其他编辑器,它们都很糟糕。

由我开发的win10iconTools

您可以创建ICO文件(根据微软的建议或不根据微软的建议),或创建带有分辨率的图标。后者是我用来制作表格的方法。
支持多种调整大小模式,包括最近邻居算法。如果您愿意,在其他Windows版本上也可以使用它,它适用于.net2,测试另一个Windows版本,请将结果发送给我,并将表格扩展为人类的福祉。

至于图标中的像素艺术,它不可能完美:(,除非我们可以更改Windows 10中的缩放算法。 因此,宽范围的84-256将被缩放为“0”(见上文),因此添加大于256的内容没有任何意义,我现在认为应该为“0”创建一个256个像素的图像。 (请参阅表格)

如果Windows获取所有图标的大小为16到255的像素加上1个大于255的像素(在表格中为0),则选择这些大小: (所以这里没有Markdown表格吗?表格已经很宽了,在应用程序的自述文件中也有表格。)

|                                           |                 Windows 10                | 
|                                           |   96DPI  |  120DPI  |  144DPI  |  168DPI  | 
| icon                                      |disp.|load|disp.|load|disp.|load|disp.|load| 
|-------------------------------------------|-----|----|-----|----|-----|----|-----|----| 
| alt-tab                                   | 24  | 32 | 30  | 32 | 36  | 32 | 42  | 32 | 
| desktop large                             | 96  | 0  | 120 | 0  | 144 | 0  | 168 | 0  | 
| desktop medium                            | 48  | 48 | 60  | 60 | 72  | 72 | 84  | 84 | 
| desktop small                             | 32  | 32 | 40  | 40 | 48  | 48 | 56  | 56 | 
| explorer content, inc0                    | 32  | 32 | 40  | 40 | 48  | 48 | 56  | 56 | 
| explorer extra large                      | 256 | 0  | 256 | 0  | 256 | 0  | 256 | 0  | 
| explorer large                            | 96  | 0  | 120 | 0  | 144 | 0  | 168 | 0  | 
| explorer medium                           | 48  | 48 | 60  | 60 | 72  | 72 | 84  | 84 | 
| explorer small:inc4,list:inc3,details:inc2| 16  | 16 | 20  | 20 | 24  | 24 | 28  | 28 | 
| explorer tiles, inc1                      | 48  | 48 | 60  | 60 | 72  | 72 | 84  | 84 | 
| startmenu medium                          | 32  | 32 | 40  | 40 | 48  | 48 | 56  | 63 | 
| startmenu programs                        | 24  | 24 | 30  | 30 | 36  | 36 | 42  | 42 | 
| startmenu search                          | 32  | 60 | 40  | 60 | 48  | 60 | 56  | 0  | 
| startmenu tile small                      | 24  | 24 | 30  | 31 | 36  | 39 | 42  | 47 | 
| taskbar normal                            | 24  | 32 | 30  | 40 | 36  | 48 | 42  | 56 | 
| taskbar small                             | 16  | 16 | 20  | 20 | 24  | 24 | 28  | 28 | 
| window icon                               | 16  | 16 | 20  | 16 | 24  | 16 | 28  | 16 | 
| desktop inc0                              | 16  | 16 | 20  | 20 | 24  | 24 | 28  | 28 | 
| desktop inc1                              | 18  | 32 | 23  | 40 | 27  | 48 | 32  | 56 | 
| desktop inc2                              | 20  | 30 | 25  | 40 | 30  | 48 | 35  | 56 | 
| desktop inc3                              | 22  | 32 | 28  | 40 | 33  | 48 | 39  | 56 | 
| desktop inc4                              | 24  | 32 | 30  | 40 | 36  | 48 | 42  | 56 | 
| desktop inc5                              | 27  | 32 | 34  | 40 | 41  | 48 | 47  | 56 | 
| desktop inc6                              | 30  | 32 | 38  | 40 | 45  | 48 | 53  | 56 | 
| desktop inc7                              | 33  | 48 | 41  | 60 | 50  | 72 | 58  | 84 | 
| desktop inc8                              | 37  | 48 | 46  | 60 | 56  | 72 | 65  | 84 | 
| desktop inc9                              | 41  | 48 | 51  | 60 | 62  | 72 | 72  | 84 | 
| desktop inc10                             | 46  | 48 | 58  | 60 | 69  | 72 | 82  | 84 | 
| desktop inc11                             | 51  | 0  | 64  | 0  | 77  | 0  | 89  | 0  | 
| desktop inc12                             | 57  | 0  | 71  | 0  | 86  | 0  | 100 | 0  | 
| desktop inc13                             | 63  | 0  | 79  | 0  | 95  | 0  | 110 | 0  | 
| desktop inc14                             | 70  | 0  | 88  | 0  | 105 | 0  | 123 | 0  | 
| desktop inc15                             | 78  | 0  | 98  | 0  | 117 | 0  | 137 | 0  | 
| desktop inc16                             | 87  | 0  | 109 | 0  | 131 | 0  | 152 | 0  | 
| desktop inc17                             | 97  | 0  | 121 | 0  | 146 | 0  | 170 | 0  | 
| desktop inc18                             | 108 | 0  | 135 | 0  | 162 | 0  | 189 | 0  | 
| desktop inc19                             | 120 | 0  | 150 | 0  | 180 | 0  | 210 | 0  | 
| desktop inc20                             | 133 | 0  | 166 | 0  | 200 | 0  | 233 | 0  | 
| desktop inc21                             | 148 | 0  | 185 | 0  | 222 | 0  | 256 | 0  | 
| desktop inc22                             | 164 | 0  | 205 | 0  | 246 | 0  | 256 | 0  | 
| desktop inc23                             | 182 | 0  | 228 | 0  | 256 | 0  | 256 | 0  | 
| desktop inc24                             | 202 | 0  | 253 | 0  | 256 | 0  | 256 | 0  | 
| desktop inc25                             | 224 | 0  | 256 | 0  | 256 | 0  | 256 | 0  | 
| desktop inc26                             | 249 | 0  | 256 | 0  | 256 | 0  | 256 | 0  | 
| explorer inc5                             | 18  | 32 | 23  |    |     |    |     |    | 
| explorer inc6                             | 20  | 32 | 25  |    |     |    |     |    | 
| explorer inc7                             | 22  | 32 | 28  |    |     |    |     |    | 
| explorer inc8                             | 23  | 32 | 29  |    |     |    |     |    | 
| explorer inc9                             | 25  | 32 | 31  |    |     |    |     |    | 
| explorer inc10                            | 27  | 32 | 34  |    |     |    |     |    | 
| explorer inc11                            | 29  | 32 | 36  |    |     |    |     |    | 
| explorer inc12                            | 31  | 32 | 39  |    |     |    |     |    | 
| explorer inc13                            | 33  | 48 | 41  |    |     |    |     |    | 
| explorer inc14                            | 35  | 48 | 44  |    |     |    |     |    | 
| explorer inc15                            | 38  | 48 | 48  |    |     |    |     |    | 
| explorer inc16                            | 41  | 48 | 51  |    |     |    |     |    | 
| explorer inc17                            | 44  | 48 | 55  |    |     |    |     |    | 
| explorer inc18                            | 47  | 48 | 59  |    |     |    |     |    | 
| explorer inc19                            | 50  | 0  | 63  |    |     |    |     |    | 
| explorer inc20                            | 54  | 0  | 68  |    |     |    |     |    | 
| explorer inc44                            | 239 | 0  | 256 | 0  |     |    |     |    | 
| explorer inc45                            | 256 | 0  | 256 | 0  |     |    |     |    | 

桌面版有27个缩放增量,IE浏览器上有45个缩放增量(包括从“底层”菜单中默认的)。

图标格式规范:

|**block**  |**offset** |**offset** |**length** |**description**                |
|-----------|-----------|-----------|-----------|-------------------------------|
|main header|   0       |           |   2       |Reserved=0                     |
|           |   2       |           |   2       |Image type: 1(.ICO) 2(.CUR)    |
|           |   4       |           |   2       |Number of images in container  |
|image head1|   6       |   0       |   1       |Pixel width                    |
|           |   7       |   1       |   1       |Pixel height                   |
|           |   8       |   2       |   1       |Color palette size or 0        |
|           |   9       |   3       |   1       |Reserved=0                     |
|           |   A       |   4       |   2       |Color planes=0 or 1            |
|           |   C       |   6       |   2       |Bits per Pixel                 |
|           |   E       |   8       |   4       |Image raw size                 |
|           |   12      |   C       |   4       |Offset of imageblock from BOF  |
|image head2|   16      |   0       |   1       |Pixel width                    |
|   ...     |   ...     |   ...     |   ...     |...                            |
|imageblock1|   ...     |   ...     |   ...     |all image data goes here:      |
|           |   ...     |   ...     |   ...     |   pngs included in whole      |
|           |   ...     |   ...     |   ...     |   bmps missing first 14 bytes |

你的工具链接已经失效了。为什么不将它上传到GitHub并分享呢?谢谢! - kdaveid
1
你没有在任何地方解释如何使用你的工具。 - NateS
抱歉,您是指64吗?您的帖子中有84,这在其他地方没有提到,但没有提到似乎是默认大小之一的64。 - user4551
我也尝试使用了你的工具,但是没有弄清楚如何正确使用它。 - masiton

0

在Windows 10中看到的图标都被打包成一个名为Segoe MDL2 Assets的图标字体,所有内置的UWP应用程序(如Groove Music)都使用此字体来显示图标。此外,Windows商店中的一些应用程序也在使用它。


Firefox(不是通用应用程序)在开始菜单中有一个大图标,并且它有颜色。 - z4k
亲爱的,我没有提到那个问题,我知道它不是。Windows应用程序没有任何关于磁贴的API,它们只能为桌面和任务栏快捷方式定义图标,因此Windows会将它们用于开始菜单磁贴。 - RaminMT
我还双重检查了开始菜单上的Firefox中等瓷砖,图标比小瓷砖要小(也许是对我来说)! - RaminMT
请查看帖子中的图片,并告诉我如何操作。 - z4k
看到我的图片上的颜色差异了吗?似乎火狐图标包含了背景。 - z4k
看看我关于火狐浏览器添加的那些部分,似乎VS无法在WPF项目中实现它 :( - z4k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接