यहाँ स्वीकार किए जाते हैं जवाब से रोब डब्ल्यू एक बार से अधिक आकार (16, 32, आदि) टाइप करने के लिए होने से बचने के लिए बहुत मामूली अनुकूलन के साथ,:
#!/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[@]}"
यहां logo.svg
इनपुट (स्रोत) छवि का प्रतिनिधित्व करता है, जिसमें से हम वांछित आकारों ( , आदि) की छोटी फाइलें बनाते हैं 16.png
, 32.png
जिन्हें हम फिर आउटपुट (परिणाम) आइकन फ़ाइल में जोड़ते हैं favicon.ico
। आप पंक्ति 3 में आकारों की सूची को बदल सकते हैं, उदाहरण के लिए, "16 24 32 48 64 64 72 128" पर, और convert
कमांड स्वचालित रूप से तदनुसार अनुकूल हो जाएगी, क्योंकि यह स्क्रिप्ट जी-मैन द्वारा वर्णित तकनीक का उपयोग करता है यहां एक निर्माण करने के लिए फ़ाइल नाम की सरणी। और अंत में हम फिर से फ़ाइल नाम के सरणी का उपयोग करके पंक्ति 4 में बनाई गई PNG फ़ाइलों को अनलिंक (हटाएं) करते हैं।
मैंने देखा है कि कमांड:
convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico
( user400747 के जवाब में प्रस्तुत एक के बराबर ) वास्तव में बिटमैप छवि (खोई हुई गुणवत्ता) और परतों की पृष्ठभूमि की पारदर्शिता खो गई है।
convert
हर बार उपयोग करने का एक नया तरीका सीखता हूं। जवाब के लिए धन्यवाद!