To help some people crawling on that problem. Here is an offline script to convert your PNG (or whatever can be read by ImageMagick, which is pretty wide). Made in collaboration with Le Chat :
#!/bin/bash
# Fichier généré par Mistral.ai
# Auteur : Roland Laurès
# License MIT
# Vérifier si la commande convert est installée
if ! command -v convert &> /dev/null
then
# Détecter le système d'exploitation
if [[ -f /etc/os-release ]]; then
# Utiliser le fichier /etc/os-release pour détecter le système d'exploitation
. /etc/os-release
if [[ "$ID" == "debian" || "$ID" == "ubuntu" ]]; then
echo "La commande 'convert' n'est pas installée. Veuillez l'installer avec la commande suivante :"
echo "sudo apt-get update"
echo "sudo apt-get install imagemagick"
elif [[ "$ID" == "fedora" ]]; then
echo "La commande 'convert' n'est pas installée. Veuillez l'installer avec la commande suivante :"
echo "sudo dnf install ImageMagick"
fi
elif [[ -f /etc/redhat-release ]]; then
# Détecter le système d'exploitation Red Hat ou CentOS
if [[ -f /etc/centos-release ]]; then
echo "La commande 'convert' n'est pas installée. Veuillez l'installer avec la commande suivante :"
echo "sudo yum install ImageMagick"
else
echo "La commande 'convert' n'est pas installée. Veuillez l'installer avec la commande suivante :"
echo "sudo dnf install ImageMagick"
fi
elif [[ "$(uname)" == "Darwin" ]]; then
# Détecter macOS
echo "La commande 'convert' n'est pas installée. Veuillez l'installer avec la commande suivante :"
echo "brew install imagemagick"
else
echo "La commande 'convert' n'est pas installée. Veuillez l'installer avec le gestionnaire de paquets de votre système d'exploitation."
fi
exit 1
fi
# Définir les dimensions des favicons à générer
declare -a SIZES=(16 24 32 48 64 76 96 120 128 152 167 180 192 256 384 512)
# Définir le chemin du fichier source
SOURCE_FILE="$1"
# Créer un dossier pour stocker les favicons générés
rm -fr app/assets/images/favicons
mkdir -p app/assets/images/favicons
# Boucler sur les dimensions des favicons à générer
for size in "${SIZES[@]}"
do
# Générer le favicon avec la taille actuelle
echo -n "Conversion vers ${size}x${size}..."
convert "$SOURCE_FILE" -resize "${size}x${size}" "app/assets/images/favicons/favicon-${size}x${size}.png"
echo 'fait.'
done
I saved it on bin/generate_favicons.sh
but it can be independent of your project. It only depends on the presence of convert
which is an ImageMagick command.
Then for Rails user, taking back the response of @Danig2k, the haml version of its template that I put in app/views/layouts/_favicon.html.haml:
- %w(76 120 152 167 180).each do |size|
= favicon_link_tag "favicons/favicon-#{size}x#{size}.png", rel: 'apple-touch-icon', type: 'image/png', sizes: "#{size}x#{size}"
- %w(16 32).each do |size|
= favicon_link_tag "favicons/favicon-#{size}x#{size}.png", rel: 'icon', type: 'image/png', sizes: "#{size}x#{size}"
Then it is called in the layout script app/views/layouts/application.html.haml
:
%html{ lang: 'fr' }
%head
...
= render 'layouts/favicon'
...
%body
...
Hopes this can help someone else.
Any comments are welcome to improve the template (maybe making a little gem for it, I didn't find any).