【问题标题】:How to compress ico file on imagemagick or other如何在 imagemagick 或其他工具上压缩 ico 文件
【发布时间】:2020-08-16 04:01:35
【问题描述】:

我在 Photoshop 中创建了一个 32x32 png 导出为 500 字节。

转换为ico使用

magick convert .\favicon.png favicon.ico

它变成了 5kb。
问题? imagemagick 中是否有压缩标志或另一种压缩 favicon.ico 的方法?

【问题讨论】:

  • 最好从 Photoshop 本身导出到 ico。
  • 我查看了 ico 文件格式,并且 BMP 或 PNG 文件可以嵌入到 ico 文件中:参见 en.wikipedia.org/wiki/ICO_(file_format)。因此,开销应该是最小的。 Imagenagick 似乎正在将您的 png 转换为 BMP。
  • 存在在线将图像转换为 ico 的网站。也许其中一个会更好。
  • @Tarik 哪里有导出 ico 形式 photoshop 的选项?
  • 一个使用 PIL 的简短 Python 脚本似乎做得很好:from PIL import Imageimage = Image.open('xBaNA.png')image.save('xBaNA.ico', sizes=[(32,32)])

标签: html image compression imagemagick favicon


【解决方案1】:

我刚刚尝试了@dan-mašek 的建议,它肯定比 ImageMagick 效果更好。

对于我正在使用的 PNG,ImageMagick 给了我一个 5.4K .ico 文件,尽管它要求它使用 .ico 对嵌入式 PNG 的支持进行压缩(显然它会忽略你的尺寸低于 256x256),而Pillow 把它降到了 1.8K。

以下是我如何根据我多年前编写的现有 PNG 优化 shell 脚本来处理我的网站图标:

#!/bin/sh

optimize_png() {
    for X in "$@"; do
        echo "---- Using pngcrush to strip irrelevant chunks from $X ----"
        # Because I don't know if OptiPNG considers them all "metadata"
        pngcrush -ow -q -rem alla -rem cHRM -rem gAMA -rem iCCP -rem sRGB \
            -rem time "$X" | egrep -v '^[ \|]\|'
    done

    echo "---- Using OptiPNG to optimize delta filters ----"
    # ...and strip all "metadata"
    optipng -clobber -o7 -zm1-9 -strip all -- "$@" 2>&1 | grep -v "IDAT size ="

    echo "---- Using AdvanceCOMP to zopfli-optimize DEFLATE ----"
    advpng -z4 "$@"
}

optimize_png 16.png 32.png

python3 << EOF
from PIL import Image

i16 = Image.open('16.png')
i32 = Image.open('32.png')
i32.save('src/favicon.ico', sizes=[(16, 16), (32, 32)], append_images=[i16])
EOF

请注意:

  1. pngcrushadvpng 不要将 -- 作为参数,因此您必须在可能以 - 开头的相对路径上添加 ./ 前缀。
  2. PIL 中的.save 必须在最大的图像上调用,所以,如果你有一个动态的图像列表,你可能想要这样的东西:
images.sort(key=lambda x: x.size)
images[-1].save('favicon.ico', sizes=[x.size for x in images], append_images=images)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2020-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多