1 个稳定版本
1.0.1 | 2023年4月26日 |
---|
#538 in 图像
7KB
76 代码行
icopng |
icopng 将 PNG 存储在 ICO 中,而不转换为带有 alpha 通道的传统位图。由于 PNG 可以压缩并且有工具可以高度优化它们,这可以节省很多空间。嵌入 PNG 数据到 favicon.ico 文件也得到了浏览器的良好支持。
与使用 GIMP、ImageMagick 或 ICOEncoder 相比,由于避免了重新编码,使用优化后的输入 PNG,结果文件可以小一个数量级。例如,对于这个输入图像,icopng 的输出比 GIMP 重新编码的 PNG 小约 30%,比传统的带有 alpha 通道的位图小约 900%。
引擎 | 嵌入式格式 | 大小 |
---|---|---|
icopng | PNG | 1.2KiB |
GIMP | PNG | 1.7KiB |
ImageMagick/GIMP | BMP | 17KiB |
用法
以下是将传统位图 ICO 文件转换为 PNG,然后使用此工具将其转换为嵌入 ICO 文件的 PNG 的示例。
# `convert' is from ImageMagick
convert favicon-old.ico favicon.png
# Optional: Shrink the png further
pngquant --skip-if-larger --strip -f --ext .png favicon.png
optipng favicon.png
# Embed into new favicon.ico
icopng favicon.png favicon.ico
为什么不直接使用...?
image::ico::ICOEncoder,或 ico crate
image 和 ico crate 确实 会将 PNG 导出为 ICO 文件(很好!),但它们会重新编码它们,从而失去了 optipng/pngquant 等东西的所有好处。
ImageMagick
像 imagemagick 这样的工具可以从 PNG 转换为 ico,但它们会将它转换为带有 alpha 通道的位图,而不是仅仅将 PNG 放入 ico 容器中,这意味着文件非常大。
GIMP
GIMP 也可以通过将 ICO 作为 ICO 导出并选择“压缩(PNG)”来导出为 ICO 中的 PNG,但这样就无法获得 pngquant/optipng 的好处。
依赖关系
~1.5MB
~24K SLoC