Inilah jawaban yang diterima oleh Rob W , dengan adaptasi sepele untuk menghindari keharusan mengetik ukuran (16, 32, dll.) Lebih dari sekali:
#!/bin/bash
files=()
for size in 16 32 48 128 256; do
inkscape -z -e "$size.png" -w "$size" -h "$size" logo.svg > /dev/null 2> /dev/null
files+=("$size.png")
done
convert "${files[@]}" -colors 256 favicon.ico
unlink "${files[@]}"
Berikut logo.svg
merupakan input (sumber) gambar, dari mana kita membuat file yang lebih kecil dari ukuran yang diinginkan ( 16.png
, 32.png
, dll) yang kemudian kita bergabung menjadi output (hasil) file icon, favicon.ico
. Anda dapat mengubah daftar ukuran pada baris 3, misalnya, menjadi "16 24 32 48 64 72 128", dan convert
perintah akan secara otomatis menyesuaikan, karena skrip ini menggunakan teknik yang dijelaskan oleh G-Man dalam jawabannya di sini untuk membangun array nama file. Dan akhirnya kami memutuskan tautan (menghapus) file PNG yang dibuat di baris 4, menggunakan array nama file lagi.
Saya perhatikan perintahnya:
convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico
(Setara dengan yang disajikan dalam jawaban user400747 ) sebenarnya skala gambar bitmap (kualitas hilang) dan lapisan latar belakang kehilangan transparansi.
convert
setiap kali saya melihatnya. Terima kasih atas jawabannya!