ฉันจะฝังหลายขนาดในไฟล์. ico ได้อย่างไร


17

ฉันเห็นไอคอน. ico ที่มีภาพแตกต่างกันในหลายขนาดเช่น 16x16, 32x32, 48x48, 128x128, 256x256 บน Windows ฉันจะสร้างไฟล์ไอคอนที่รองรับหลายขนาดด้วยวิธีนี้ได้อย่างไรเนื่องจากฉันมีไฟล์. ico ที่มีอยู่สำหรับแต่ละขนาด โปรดทราบว่าฉันหวังว่าจะทำสิ่งนี้กับ 200+ ไฟล์ดังนั้นการทำเช่นนี้จากคำสั่ง cmd จะเหมาะอย่างยิ่ง

คำตอบ:


28

ImageMagick (Windows / Mac / Linux) มีเครื่องมือบรรทัดคำสั่งconvertที่สามารถใช้งานได้หลายอย่างรวมถึงการบรรจุหลาย ๆ ภาพในไอคอนเดียว:

convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico

คำสั่งก่อนหน้าใช้เวลา 5 ภาพ PNG และรวมเป็นไฟล์. ico เดียว

ซึ่งแตกต่างจากคำตอบอื่น ๆ วิธีนี้สามารถได้อย่างง่ายดายนำมาใช้ในสคริปต์ชุดเพื่อสร้างไฟล์ไอคอนหลายโดยอัตโนมัติ ในหนึ่งในโครงการของฉันฉันมีภาพเวกเตอร์เดียว (SVG) และใช้Inkscapeเพื่อสร้างขนาดต่าง ๆ ของ png ตามด้วยconvertเพื่อสร้างคอนเทนเนอร์ไอคอน นี่เป็นตัวอย่างที่ลดลง (ใน bash script):

#!/bin/bash
for size in 16 32 48 128 256; do
    inkscape -z -e $size.png -w $size -h $size icon.svg >/dev/null 2>/dev/null
done
convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico

1
ผู้ชายฉันรู้สึกเหมือนได้เรียนรู้วิธีใหม่ในการใช้ ImageMagick convertทุกครั้งที่ฉันมองเข้าไป ขอบคุณสำหรับคำตอบ!
Suchipi

คุณทำตรงกันข้ามอย่างไร แปลง.icoPNG หลายรายการตามขนาดที่มีหรือไม่
Flimm

2
@Flimm convert favicon.ico favicon.pngสร้างfavicon-0.pngและfavicon-1.pngอื่น ๆ สำหรับทุกไอคอนในเฟรม หากคุณต้องการทราบขนาดของภาพให้ใช้identifyคำสั่งในไฟล์ png
Rob W

คุณสามารถใช้ imagemagicks ของตัวเองconvert <icon.png> -resize 64x64แทน inkscape
kumarharsh

ฉันเพิ่มลง-dither Noneในคำสั่งแปลงเนื่องจากการแปลงเริ่มต้นเป็น 256 สีเพิ่มสัญญาณรบกวนบางส่วนให้กับไอคอนของฉัน
James Roth

7

คำสั่งที่ดีกว่าสำหรับ ImageMagick:

convert in.jpg -define icon:auto-resize=16,48,256 -compress zip out.ico

1
นี่เป็นคำตอบที่ดีจริงๆ ใช้คำสั่งนี้เพื่อทดสอบว่าไฟล์ได้แปลงจริงแล้ว:identify out.ico
kumarharsh

5

คุณสามารถทำเช่นนี้ได้ฟรีในGIMP มีคำแนะนำสั้น ๆ สำหรับการทำเช่นนี้ที่นี่

อ้างถึง:

  1. เปิดภาพของคุณใน Gimp
  2. ทำสแควร์ผ้าใบของคุณ
  3. ปรับขนาดเลเยอร์ของคุณเป็นรูปภาพ
  4. ขยายเลเยอร์ให้มีขนาดใหญ่ที่สุดในไฟล์. ico ของคุณเช่น 64 พิกเซล
  5. ทำซ้ำเลเยอร์
  6. ขยายเลเยอร์ที่ซ้ำกันเป็นขนาดถัดไป
  7. ทำซ้ำ / ปรับขนาดสำหรับทุกขนาดที่คุณต้องการในไฟล์. ico ของคุณ
  8. บันทึกเป็น. ico

ในกรณีของคุณคุณสามารถเริ่มด้วยภาพที่ใหญ่ที่สุดและย่อขนาดลงสำหรับภาพที่ซ้ำกันหรือคุณสามารถเพิ่มเลเยอร์ใหม่และนำเข้าภาพไอคอนเฉพาะที่คุณต้องการลงในเลเยอร์นั้น


คุณรองรับความลึกของสีหลายวิธีด้วยวิธีนี้ได้อย่างไร
Random832

ไม่สามารถพูดได้ว่าฉันต้องทำอย่างนั้นเป็นการส่วนตัว แต่โพสต์นี้บอกว่า GIMP ควรแสดงกล่องโต้ตอบการตั้งค่าสีสำหรับแต่ละเลเยอร์เมื่อทำการบันทึก
techturtle

คุณต้องเลือกที่จะส่งออกใน Gimp 2.8.16 แต่ปีต่อมาฉันสามารถมั่นใจได้ว่าจะมีกล่องโต้ตอบสำหรับการตั้งค่าสีเมื่อคุณส่งออก ico
Broots Waymb

1

นี่คือคำตอบที่ได้รับการยอมรับโดยร็อบ 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 ) จริง ๆ แล้วภาพบิตแมปขนาด (คุณภาพที่หายไป) และเลเยอร์พื้นหลังสูญเสียความโปร่งใส


1
(1) คุณได้คัดลอกคำตอบของคนอื่นเป็นหลัก ถ้าคุณทำอย่างนั้นและไม่มีอะไรเพิ่มเติม (ใช่บางคนทำอย่างนั้น) ฉันจะทำเครื่องหมายคำตอบของคุณสำหรับการลบ ฉันไม่ได้ทำอย่างนั้นเพราะคุณทำให้ดีขึ้นเล็กน้อย แต่เมื่อใดก็ตามที่คุณคัดลอกงานของคนอื่นคุณควรรับทราบผู้แต่งดั้งเดิมโดยใช้ชื่อและเชื่อมโยงไปยังข้อมูลที่คุณอ้างถึง (2) โปรดอย่าพูดคำว่า "นี่ยืดหยุ่นกว่า" โดยไม่อธิบายว่าคุณหมายถึงอะไร … (ต่อ)
สกอตต์

(ต่อ) ... (3) คุณควรพูดตัวแปรเชลล์เสมอเว้นแต่ว่าคุณไม่มีเหตุผลที่ดีและคุณแน่ใจว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่ อันที่จริงจากตัวอย่างทั้งหมดที่ฉันเคยเห็นของสคริปต์ที่ใช้ตัวแปรเชลล์โดยไม่ต้องอ้างอิงพวกเขา (เช่นRob W ) อาจเป็นกลุ่มที่แย่ที่สุด แต่ถึงกระนั้นก็ยังดีกว่าที่จะพูดตัวแปร (4) ทำไมคุณถึงใช้unlinkแทนกันมากขึ้นrm?
สกอตต์

1

ไฟล์แบตช์ของ Windows ซึ่งสร้าง. PNG หลายขนาดและรวมเข้ากับไฟล์. ICO ไฟล์เดียว:

@echo off

set inkScape="C:\SOFTWARE\GRAPHIC\INKSCAPE\inkscape.exe"
set imageMagick="C:\SOFTWARE\DEVELOPER\IMAGEMAGICK\magick.exe"
set fileName=favicon
set importType=svg
set exportType=png
set exportDpi=300
set imageSizes=(16 24 32 48 57 60 64 70 72 76 96 114 120 128 144 150 152 180 192 196 256 300 320 400 450 460 480 512 600)

for %%s in %imageSizes% do (
 %inkScape% -z -f %~dp0%fileName%.%importType% -w %%s -h %%s -e %~dp0%fileName%-%%sx%%s.%exportType% -d %exportDpi%
 echo CREATED: %fileName%-%%sx%%s.%exportType%
 set e=%fileName%-%%sx%%s.%exportType%
 call :concat (e)
)

%imageMagick% %exportFileNames%"%~dp0%fileName%.ico"
echo MERGED IN: %fileName%.ico

pause goto :eof


:concat (e) (
 set exportFileNames=%exportFileNames%"%~dp0%e%" 
)

หากคุณไม่ต้องการไฟล์. PNG คุณสามารถลบ (หรือลบ) ไฟล์เหล่านั้นโดยdel FILEหรือบันทึก PNG ทั้งหมดไว้ในไดเรกทอรีที่คุณสามารถลบได้ (หลังจาก%imageMagick% %exportFileNames%"%~dp0%fileName%.ico")

หวังว่าจะช่วยใครซักคน :)


0

ฉันคิดว่าAxialis IconMakerเป็นวิธีแก้ปัญหาไอคอนที่ดีที่สุด มีการทดลองใช้ 30 วันซึ่งอาจช่วยแก้ปัญหาให้คุณได้

ฉันใช้ Axialis มาหลายปีแล้วและในหลาย ๆ โครงการฉันสามารถยืนยันได้ว่ามันเป็นผลิตภัณฑ์ที่คุ้มค่าจริงๆ คุณไม่ต้องการ 30 วัน! ฮา!


0

คุณต้องใช้โปรแกรมแก้ไขไอคอนบุคคลที่สามเนื่องจาก MSPaint สนับสนุนไอคอนเดียวต่อไฟล์เท่านั้น มีคู่ของหัวข้อที่นี่มีคำแนะนำสำหรับบรรณาธิการไอคอนบางฟรีบางในเชิงพาณิชย์

เมื่อคุณชำระเงินในเครื่องมือแก้ไขไอคอนวิธีการเพิ่มรูปแบบไอคอนจะแตกต่างกัน แต่โดยทั่วไปจะคล้ายกัน (คุณคลิกปุ่มหรือเลือกรายการเมนูเพื่อเพิ่มรูปแบบใหม่) โปรแกรมส่วนใหญ่จะอนุญาตให้คุณนำเข้าไฟล์ไอคอนเมื่อเพิ่มรูปแบบ / ขนาดไอคอน แต่ส่วนใหญ่จะให้คุณสร้างรูปแบบ / ขนาดใหม่จากไฟล์ที่มีอยู่แล้วด้วยการปรับขนาดอีกครั้ง

หากคุณเลือกที่จะใช้ตัวเลือกการสร้างจากที่มีอยู่เมื่อเพิ่มรูปแบบ / ขนาดใหม่ตรวจสอบให้แน่ใจว่าได้สร้างจากรูปแบบไอคอนที่ใหญ่ที่สุดที่คุณมีอยู่แล้วเนื่องจากจะมีข้อมูลมากที่สุดสำหรับอัลกอริทึมการปรับขนาดใหม่ . นอกจากนี้ตรวจสอบให้แน่ใจว่าใช้เวอร์ชันด้วยความโปร่งใสเมื่อสร้างไอคอน XP / Vista เนื่องจากโปรแกรมส่วนใหญ่ไม่ดีในการสร้างช่องอัลฟาตั้งแต่เริ่มต้น


ฉันต้องทำมากกว่า 200 ไอคอน เครื่องมือแก้ไขไอคอนเหล่านี้สามารถทำงานในแบตช์ได้หรือไม่?
Suchipi

1
ฉันจำไม่ได้ว่าเคยคว้าตัวแก้ไขไอคอนด้วยโหมดแบทช์ คุณสามารถลองใช้โปรแกรมแก้ไขภาพในโหมดแบทช์ แต่ฉันไม่แน่ใจว่าโปรแกรมแก้ไขภาพใดมีการสนับสนุนไอคอนหลายรูปแบบ (อย่างน้อยไม่ได้มาจาก command-line / batch-mode) ถ้ามีจะเป็นเช่นนั้น ImageMagick นอกจากนี้คุณควรเพิ่มปริมาณและข้อกำหนดของโหมดแบทช์ให้กับคำถาม
Synetech

0

คุณอาจลองแมทเธีย Benkmann ของpng2ico ฟรีและสามารถแพ็ค png หลายขนาดลงในไฟล์ ico ไฟล์เดียว


มีข้อ จำกัด บางอย่างที่น่าสนใจแม้ว่า:Width must be multiple of 8 and <256. Height must be <256.
Francois Botha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.