นี่คือคำตอบที่ได้รับการยอมรับโดยร็อบ Wมีการปรับตัวเล็กน้อยเพื่อหลีกเลี่ยงการพิมพ์ขนาด (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 72 128" และconvert
คำสั่งจะปรับเปลี่ยนอัตโนมัติตามเพราะสคริปต์นี้ใช้เทคนิคที่อธิบายโดย G-Man ในคำตอบของเขาที่นี่เพื่อสร้าง อาร์เรย์ของชื่อไฟล์ และในที่สุดเราก็ยกเลิกการเชื่อมโยง (ลบ) ไฟล์ PNG ที่สร้างในบรรทัดที่ 4 โดยใช้อาร์เรย์ของชื่อไฟล์อีกครั้ง
ฉันสังเกตเห็นว่าคำสั่ง:
convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico
(เทียบเท่ากับที่แสดงในคำตอบของผู้ใช้ 400747 ) จริง ๆ แล้วภาพบิตแมปขนาด (คุณภาพที่หายไป) และเลเยอร์พื้นหลังสูญเสียความโปร่งใส
convert
ทุกครั้งที่ฉันมองเข้าไป ขอบคุณสำหรับคำตอบ!