Ico 格式 - 32 位 PNG 与 32 位 BMP 与 24 位 BMP

Posted

技术标签:

【中文标题】Ico 格式 - 32 位 PNG 与 32 位 BMP 与 24 位 BMP【英文标题】:Ico format - 32bit PNG vs 32bit BMP vs 24bit BMP 【发布时间】:2012-08-22 06:01:06 【问题描述】:

我正在发布一个 .NET 程序,并且正处于完善阶段。我需要在项目属性中设置图标。根据我的研究,我想创建以下像素大小的图像以适应所有图标大小:16、32、48、96、256。

我还找到了一个程序,可以将 5 张图片转换为一个名为“png2ico”的 ico 文件。

我的问题是这个。我的源图片是 32 位(RGB + alpha)PNG 文件。我只听说过 Vista 和更高版本支持读取其中包含 PNG 内容的 .ico 文件,所以如果我向可能只有 Windows XP 的公众发布,那么使用带有 PNG 的 ico 文件是否危险?

如果我需要使用带有 BMP 的 ico 文件,那么使用 32 位 BMP 是否危险?由于抗锯齿效果不佳等原因,我宁愿不使用 24 位 BMP。

如果我需要在 PNG 上使用 BMP,是否有任何建议可以将多个 BMP 转换为单个 .ico 文件的程序?

【问题讨论】:

【参考方案1】:

png2ico 将 png 作为源文件,但并未说明它实际上在生成的 ico 文件中使用了 png 压缩。

我建议你使用Gimp,在那里你可以为你希望生成的 ico 支持的每个大小创建一个带有图层的图像。然后,当您导出/保存为 ico 时,它会询问您想要对每一层进行哪种压缩。

对于最大的图层(96 和 256),使用 png 压缩非常安全,因为通常较旧的桌面不会显示那么大的图标。

【讨论】:

Gimp 有点矫枉过正,尽管我最终可能会使用它。 96 或 256 的 PNG 和任何更低的 BMP 听起来不错,但你真的可以将它们混合在一个 ico 文件中吗?也许我宁愿将它们全部制作成 BMP,即使以文件大小为代价。 是的,您可以混合使用它们,不要将输入格式与每个图标在生成的 ico 中的压缩混淆,将 ico 文件视为多个图像的容器,每个图像都可以具有不同的位深度和压缩。如果你有 alpha 通道(即透明度下降),我建议你坚持使用 png 作为输入格式,否则你会失去质量。【参考方案2】:

PNG 图像仅在 Vista+ 上显示,但在旧版本上不会引起问题。

32 位 BMP 在 XP+ 上正常工作,并且在旧版本上显示 alpha 通道(黑色)损坏(可以通过适当的掩码避免(大多数图标编辑器不支持 32bpp 图像?),然后它将显示为24bpp 图像)

你真的应该使用真正的图标编辑器,那里有 several free 应用程序。

【讨论】:

如果比 Vista 更早的操作系统版本不支持 .ico 内的 PNG,那么它们将如何显示 ico 文件?图标会变成空白吗? 只要提供其他格式(非PNG)就可以了 我尝试了大约十几个免费软件/商业实用程序,因为我最初认为完整的像素编辑器太过分了(我使用了自己的绘图软件)。但最终,他们每个人都有自己的问题。所以我使用了你的两个建议之一(IcoFX),它几乎可以处理所有问题。谢谢你。对于我的位置,首先导入图像,(然后选择 256x256 选项)。接下来,在 IcoFX 的“图标”菜单中选择“从图像创建 Windows 图标”,它会自动从原始 256x256 32 位图像创建其他尺寸。顺便说一句,XP 似乎不支持 alpha 通道(没有图标具有任何抗锯齿功能)。 XP 支持 8 位 alpha 通道(32bpp ARGB 位图)。这是旧版 XP 图标指南:msdn.microsoft.com/en-us/library/ms997636.aspx 和旧版指南:msdn.microsoft.com/en-us/library/ms997538.aspx 另请参阅:blogs.msdn.com/b/oldnewthing/archive/2010/10/21/10078690.aspx

以上是关于Ico 格式 - 32 位 PNG 与 32 位 BMP 与 24 位 BMP的主要内容,如果未能解决你的问题,请参考以下文章

浅谈32位和64位操作系统与内存的关系

使用alpha将8位PNG转换为32位

图片转换,PNG转32位BMP;BMP大小转换

photoshop 24位 png或jpg图 啥意思

如何让32位OFFICE 2003与64位OFFICE 2013共存

如何制作ico图标