多年来,我一直在使用http://tools.dynamicdrive.com/favicon/来生成网站图标。在我什至不知道如何进行任何编码之前,我就开始使用它(我现在不太好)。我不介意使用该实用程序,因为图标总是看起来不错,但我希望能够在本地进行。
如何使用脚本在本地创建网站图标?不知何故使用 PHP,imagemagick / gd 或者可能从命令行啜饮?
多年来,我一直在使用http://tools.dynamicdrive.com/favicon/来生成网站图标。在我什至不知道如何进行任何编码之前,我就开始使用它(我现在不太好)。我不介意使用该实用程序,因为图标总是看起来不错,但我希望能够在本地进行。
如何使用脚本在本地创建网站图标?不知何故使用 PHP,imagemagick / gd 或者可能从命令行啜饮?
您可以使用 imagemagik 转换。我从这个网站获取了这些命令。
首先制作一个主图像:
convert some_image.bmp -resize 256x256 -transparent white favicon-256.png
然后我们要为您想要包含在 .ico 文件中的每种尺寸制作图像。
convert favicon-256.png -resize 16x16 favicon-16.png
convert favicon-256.png -resize 32x32 favicon-32.png
convert favicon-256.png -resize 64x64 favicon-64.png
convert favicon-256.png -resize 128x128 favicon-128.png
现在您要将它们捆绑到 .ico 文件中,我发现的技巧是将其设置为 256 色,否则将无法正常显示!
convert favicon-16.png favicon-32.png favicon-64.png favicon-128.png favicon-256.png -colors 256 favicon.ico
ImageMagick 或 phpThumb 将为您执行此操作,但更简单的解决方案(仅需要 PHP 和 GD 库)是https://github.com/chrisbliss18/php-ico
看看这个脚本: http ://bgallz.org/488/php-favicon-generator-script/
我使用 PHP 编写它以从 jpeg、gif 或 png 生成 favicon (.ico) 文件。正如上面的 ernie 所说,大多数浏览器现在都支持图标的图像文件。该脚本只是将文件的扩展名更改为“.ico”
正如我所拥有的:
// Rename image to .ico file
rename($filename,"./favicon/".$strip_ext.".ico");
我为此创建了一个项目:faviconbuild。
我用两个简单的脚本构建了它(一个 .bat 用于 Windows,一个 .sh 用于 Unix、Mac 和 Windows,如果使用 Cygwin)。它依赖于ImageMagick,因此您可以为您的平台下载最新版本,或者从我包含在发行版中的版本中获取。
我已经在MIT 许可下发布了它,因此您可以随意将它用于商业或个人项目,或者简单地用作您自己脚本的灵感。
我目前在我自己的项目中使用它,如下所示:
./faviconbuild/faviconbuild.sh -i ./source.png
您可以通过-h
or--help
选项获得可用命令的完整列表。
这将获取输入源图像并生成所有输出图像和多分辨率 .ico,以及您的网站所需的 html 标记。
还可以通过提供基于自定义文本的解析文件作为输入来自定义脚本。当前文件可以在这里的项目中找到。这使得脚本可以轻松地为所有平台上的任何项目扩展。
由于它托管在github上,因此我鼓励任何人为该项目做出贡献,即使只是提交功能请求。
我还发布了一篇博客文章,介绍了开发过程并作为 bash/batch 的迷你教程。
您真正需要做的就是将图像大小调整为 16x16 文件。虽然 ICO 格式曾经是标准格式,但现代浏览器可以处理PNG、GIF 和 JPG(以及其他格式)。
通过谷歌搜索可以轻松找到调整大小的脚本,例如:
http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/
此脚本更新现有文件,您可能需要为您的项目更改它。删除“确认”行,或获取我的确认脚本以配合它。
警告:它将破坏.png
当前目录中的任何文件。
#!/bin/bash -eu
# public domain, by Sam Watkins
echo "You need to run this from a directory containing only the png icons."
confirm "Are you in the icons directory?"
source=`readlink -f "$1"`
chmod -w $source
v convert "$source" -resize 512x512 -background white -alpha remove -alpha off tmp-512-white.png
v convert "$source" -resize 512x512 tmp-512.png
sizes="16 32 64 128 256"
favicons=
for W in $sizes; do
F=favicon-${W}x$W.png
v convert tmp-512.png -resize ${W}x$W $F
favicons="$favicons $F"
done
v convert $favicons -colors 256 favicon.ico
for F in *.png; do
case "$F" in
favicon-*)
;;
apple-touch-icon*)
v convert tmp-512-white.png -resize `identify -format "%wx%h" "$F"` "$F"
;;
*)
v convert tmp-512.png -resize `identify -format "%wx%h" "$F"` "$F"
;;
esac
done
rm -f tmp-512-white.png tmp-512.png