Bagaimana cara menyematkan banyak ukuran dalam file .ico?

16

Saya telah melihat ikon .ico yang memiliki gambar berbeda untuk berbagai ukuran, mis. 16x16, 32x32, 48x48, 128x128, 256x256. Di Windows, bagaimana saya bisa membuat file ikon yang mendukung banyak ukuran dengan cara ini, mengingat saya memiliki file .ico yang ada untuk setiap ukuran? Harap dicatat bahwa saya berharap dapat melakukan ini pada 200+ file, jadi melakukannya dari cmd akan ideal.

Suchipi
sumber

Jawaban:

28

ImageMagick (Windows / Mac / Linux) berisi alat baris perintah yang disebut convertyang dapat digunakan untuk banyak hal, termasuk mengemas beberapa gambar dalam satu ikon:

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

Perintah sebelumnya mengambil 5 gambar PNG, dan menggabungkannya menjadi satu file .ico.

Tidak seperti jawaban lain, metode ini dapat dengan mudah digunakan dalam skrip batch untuk secara otomatis menghasilkan beberapa file ikon. Dalam salah satu proyek saya, saya memiliki gambar vektor tunggal (SVG), dan menggunakan Inkscape untuk menghasilkan png dengan berbagai ukuran, diikuti dengan convertmembuat wadah ikon. Ini adalah contoh yang dikurangi (dalam skrip bash):

#!/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
Rob W
sumber
1
Sobat, saya merasa seperti saya belajar cara baru untuk menggunakan ImageMagick convertsetiap kali saya melihatnya. Terima kasih atas jawabannya!
Suchipi
Bagaimana Anda melakukan yang sebaliknya? Konversi .icomenjadi beberapa PNG, berdasarkan ukuran yang dikandungnya?
Flimm
2
@Flimm convert favicon.ico favicon.pngmenghasilkan favicon-0.png,, favicon-1.pngdll. Untuk setiap ikon di bingkai. Jika Anda ingin mengetahui dimensi gambar, gunakan identifyperintah pada file png.
Rob W
Anda dapat menggunakan imagemagick sendiri convert <icon.png> -resize 64x64alih-alih inkscape
kumarharsh
Saya menambahkan -dither Noneke perintah convert karena konversi default ke 256 warna menambahkan beberapa noise ke ikon saya
James Roth
7

Perintah yang lebih baik untuk ImageMagick:

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

sumber
1
Ini sebenarnya jawaban yang bagus. Gunakan perintah ini untuk menguji apakah file tersebut benar-benar telah dikonversi:identify out.ico
kumarharsh
5

Anda dapat melakukan ini secara gratis di GIMP . Ada instruksi singkat untuk melakukan ini di sini .

Kutipan:

  1. Buka gambar Anda di Gimp
  2. Buat persegi kanvas Anda
  3. Ubah ukuran layer Anda ke gambar
  4. Skala skala ke ukuran terbesar di file .ico Anda seperti 64 piksel
  5. Gandakan layer
  6. Skala layer duplikat ke ukuran berikutnya
  7. Terus menduplikasi / scaling untuk semua ukuran yang Anda inginkan dalam file .ico Anda
  8. Simpan sebagai .ico

Dalam kasus Anda, Anda bisa mulai dengan gambar terbesar dan menurunkan untuk setiap gambar yang digandakan, atau Anda bisa menambahkan layer baru dan mengimpor ikon gambar tertentu yang Anda inginkan ke dalam layer itu.

techturtle
sumber
Bagaimana Anda mendukung kedalaman beberapa warna dengan metode ini?
Random832
Tidak dapat mengatakan bahwa saya harus melakukan itu secara pribadi, tetapi posting ini mengatakan GIMP harus memunculkan dialog pengaturan warna untuk setiap lapisan setelah disimpan.
techturtle
Anda harus memilih untuk mengekspor di Gimp 2.8.16 tetapi bertahun-tahun kemudian, saya bisa memastikan bahwa ada dialog untuk pengaturan warna ketika Anda mengekspor ico.
Broots Waymb
1

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.svgmerupakan 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 convertperintah 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.

Andris Petrams
sumber
1
(1) Anda pada dasarnya menyalin jawaban orang lain. Jika Anda melakukan itu dan tidak lebih (ya, orang-orang terkadang melakukan itu), saya akan menandai jawaban Anda untuk dihapus. Saya tidak melakukan itu, karena Anda membuat sedikit peningkatan. Tetapi, setiap kali Anda menyalin karya orang lain, Anda harus mengakui penulis asli dengan nama dan dengan menautkan ke informasi yang Anda kutip. (2) Tolong jangan katakan hal-hal seperti "ini lebih fleksibel" tanpa menjelaskan apa yang Anda maksud. … (Lanjutan)
Scott
(Lanjutan) ... (3) Anda harus selalu mengutip variabel shell kecuali Anda memiliki alasan yang kuat untuk tidak melakukannya, dan Anda yakin tahu apa yang Anda lakukan. Sebenarnya, dari semua contoh yang pernah saya lihat tentang skrip yang menggunakan variabel shell tanpa mengutipnya, Anda (misalnya, Rob W ) mungkin termasuk yang paling buruk. Tapi tetap saja, lebih baik mengutip variabel. (4) Mengapa Anda menggunakan unlinkbukan yang lebih umum rm?
Scott
1

File batch Windows, yang membuat beberapa ukuran .PNG dan menggabungkannya menjadi satu file .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%" 
)

Jika Anda tidak memerlukan file .PNG, Anda dapat menghapus (atau menghapus) file-file tersebut dengan del FILEatau menyimpan semua PNG di dalam direktori yang dapat Anda hapus (setelah %imageMagick% %exportFileNames%"%~dp0%fileName%.ico").

Semoga ini bisa membantu seseorang. :)

Froschkoenig84
sumber
0

Menurut pendapat saya, Axialis IconMaker adalah solusi terbaik untuk masalah ikon. Ada uji coba 30 hari yang mungkin akan menyelesaikan masalah untuk Anda.

Saya telah menggunakan Axialis selama bertahun-tahun dan pada banyak proyek, saya dapat membuktikan bahwa itu adalah produk yang sangat berharga. Anda tidak perlu 30 hari! Ha!

Jerry Nixon
sumber
0

Anda harus menggunakan program pengeditan ikon pihak ketiga karena MSPaint hanya mendukung satu ikon per file. Ada beberapa dari benang di sini dengan rekomendasi untuk ikon editor, beberapa bebas, beberapa komersial.

Setelah Anda memilih editor ikon, metode menambahkan format ikon akan bervariasi tetapi umumnya serupa (Anda mengklik tombol atau memilih item menu untuk menambahkan format baru). Sebagian besar program memungkinkan Anda mengimpor file ikon saat menambahkan format / ukuran ikon, tetapi sebagian besar juga memungkinkan Anda membuat format / ukuran baru dari yang sudah ada dengan mengubah ukurannya.

Jika Anda memilih untuk menggunakan opsi buat-dari-yang ada saat menambahkan format / ukuran baru, pastikan untuk membuatnya dari format ikon terbesar yang sudah tersedia karena akan memiliki data terbanyak untuk algoritma pengubahan ukuran untuk bekerja dengan . Juga, pastikan untuk menggunakan versi dengan transparansi saat membuat ikon XP / Vista karena sebagian besar program tidak hebat dalam membuat saluran alpha dari awal.

Synetech
sumber
Saya perlu melakukan ini ke lebih dari 200 ikon. Bisakah salah satu dari ikon editor itu menjalankan banyak hal?
Suchipi
1
Saya tidak ingat pernah melihat editor ikon dengan mode batch. Anda dapat mencoba menggunakan editor gambar dalam mode batch, tetapi saya tidak yakin apakah editor gambar memiliki dukungan ikon multi-format (setidaknya tidak dari mode baris perintah / batch-mode). Jika ada, itu akan menjadi ImageMagick. Selain itu, Anda harus menambahkan persyaratan mode volume dan batch ke pertanyaan.
Synetech
0

Anda dapat mencoba png2ico Matthias Benkmann . Ini gratis dan dapat mengemas multi ukuran png ke dalam file ico tunggal.

Dimitri C.
sumber
Ini memiliki beberapa batasan menarik, meskipun:Width must be multiple of 8 and <256. Height must be <256.
Francois Botha