回答部分直接跳到答案,问题部分有推测和错误。答案基于实验,准确无误。
很长一段时间以来,我为我的 Visual Studio 项目使用了一个 png 打包的 256px ico 文件,它运行良好,因为缩放在这些图标上工作正常并且它们几乎不占用空间,之前我并没有那么在意.
但现在我有一个图标需要“保留硬边”,它是“像素艺术”。 如果我使用 256px 的版本进行构建,那么缩小比例会非常糟糕,或者如果我使用 16px 的版本进行构建,则放大效果会稍微好一些但还不够好。所以我的问题是:
我必须生成多少尺寸才能合并到 ico 中(我不关心 win7 之前的图标)?
如果我得到该列表,是否必须为高 dpi 设置生成 1.25x、1.5x 和 2.0x 版本?
最后,一些应用程序(如 firefox)在开始菜单中的中方 block 内有一个大图标,我的应用程序在中心有一个较小的图标,就像 Visual Studio 一样,我如何在开始菜单中放置一个大图标中等大小的广场?
我确实找到了:不幸的是 VS 说:Windows Presentation Foundation (WPF) 项目不支持 VisualElements。有解决办法吗?
我环顾四周并收集了可能的尺寸 @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 文件,看起来 1024 是你的最大分辨率可以放入一个 ico 文件,我的图标是像素化的,所以用 png 压缩得很好,仍然是 ~500k。
我还制作了一个 ico,在 rgba 中具有上述所有分辨率,并且每个分辨率都有其尺寸,因此您可以看到哪个窗口加载了哪个 dpi 设置。你可以从here下载并在一个vs项目中使用它来测试。
据我所知,所有低于 256 像素的内容都不能进行 png 压缩,对吗?
我是否需要所有这些尺寸才能保留像素完美的图标?只有 32 位(RGBA)png 可以吗?我希望我不需要包括其他深度。
在我根据规范写了一个 ico writer 之后,我意识到 png 可以有 0 个分辨率,因为 1 个字节可用于 x 或 y(但我从未见过非方形的 ico,也许 curs 可以是非方形的) ,在这种情况下,可能会使用文件中第一个分辨率为零的文件...这不确定,但我认为这与事实相差不远。查看图像。重新缩放问题仍然让我感到困惑,如果我明天有时间我会测试它。一个像素完美的图标似乎是不可能做到的:让一张图像重新缩放到 256 像素以上的任何东西。
最佳答案
答案:
ICO 文件中 256 像素以下的 PNG 是否可以接受?
Microsoft 声明 256px 以下的尺寸应该是没有前 14 个字节的 BMP。
但至少在 Windows 10 的情况下,答案是肯定的。
你能在 ICO 中添加大于 1024 像素的图像吗?
是的。只要是 PNG 格式,你想要多大就可以。
请注意“一个图标超过 255 像素”的限制:
您只能添加一个大于 255px 的图像(您可以添加更多,但 Windows 只会读取 ICO 头中分辨率为 0,0 的第一个图像 block )。该格式为每个维度指定 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 目录中,this article explains it how .我的应用程序有一个示例。
如果你为 Windows 10 制作图标,你最好使用我的工具和 photoshop(或类似工具),而不是其他任何东西,我试过编辑器,但它们很烂。
您可以创建 ICO 文件(无论是否作为 MS 推荐)或创建印有分辨率的图标,后者是我用来制作表格的。
支持多种调整大小模式,包括最近邻。
如果您愿意,可以在其他 Windows 版本上使用它,它适用于 .net2,测试另一个窗口,将结果发送给我,我会为了人类的利益扩展表格。
至于图标中的像素艺术,不可能做到完美 :(,除非我们可以更改 Windows 10 中的缩放算法。 所以一个宽范围的 84-256 被缩放到“0”(见上文),所以没有实际意义添加比 256 更大的东西,正如我现在看到的那样,你应该为“0”创建一个 256px 的图像。 (原因见表)
如果 Windows 获取所有图标 16 到 255 + 大于 255 的 1(表中的 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个缩放增量
以及资源管理器上的 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 |
关于wpf - Windows 10 所有 DPI 设置上的所有图标分辨率?格式?像素艺术作为图标?开始菜单中等磁贴中的大尺寸图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40749785/