Bir .ico dosyasına birden çok boyutu nasıl gömebilirim?


16

Örneğin, çoklu boyutlar için farklı görüntülere sahip .ico simgelerini gördüm. 16x16, 32x32, 48x48, 128x128, 256x256. Windows'ta, her boyut için mevcut .ico dosyalarına sahip olduğum sürece, bu şekilde birden fazla boyutu destekleyen bir simge dosyasını nasıl oluşturabilirim? Lütfen bunu 200'den fazla dosyaya yapmayı umduğumu unutmayın, bu yüzden cmd'den yapmak ideal olacaktır.

Yanıtlar:


23

ImageMagick (Windows / Mac / Linux), bir convertikona birden çok görüntü koyma dahil olmak üzere birçok şey için kullanılabilen bir komut satırı aracı içerir :

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

Önceki komut 5 PNG resmi çeker ve bunları tek bir .ico dosyasında birleştirir.

Diğer cevapların aksine, bu yöntem toplu komut dosyalarında otomatik olarak birkaç simge dosyası oluşturmak için kolayca kullanılabilir. Projelerimden birinde, tek bir vektör resme (SVG) sahibim ve çeşitli boyutlarda png'leri oluşturmak için Inkscape'i ve ardından convertbir simge kabı oluşturmak için kullanıyorum. Bu azaltılmış bir örnektir (bir bash betiğinde):

#!/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
Dostum, ImageMagick'i converther kullandığımda kullanmanın yeni bir yolunu öğrenmiş gibi hissediyorum . Cevap için teşekkürler!
Suchipi

Tersini nasıl yapıyorsun? .icoİçerdiği boyutlara bağlı olarak bir PNG'ye dönüştürmek ister misiniz?
Flimm

2
@Flimm convert favicon.ico favicon.pngoluşturur favicon-0.png, favicon-1.pngçerçevedeki her simge için, vb. Görüntünün boyutlarını bilmek istiyorsanız identify, png dosyasındaki komutu kullanın .
Rob W

convert <icon.png> -resize 64x64
İnkscape

-dither NoneDönüştürme komutuna ekledim çünkü 256 renge varsayılan dönüşüm ikonuma biraz ses kattı
James Roth

7

ImageMagick için daha iyi komut:

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

1
Bu aslında harika bir cevap. Dosyanın gerçekten dönüştürüldüğünü test etmek için bu komutu kullanın:identify out.ico
kumarharsh

4

Bunu GIMP'de ücretsiz yapabilirsiniz . Burada bunu yapmak için kısa talimatlar var .

Alıntılamak:

  1. Resminizi Gimp'te açın.
  2. Tuvalini kare yap
  3. Katmanınızı resme göre yeniden boyutlandırma
  4. Katmanı, .ico dosyanızdaki 64 piksel gibi en büyük boyuta ölçeklendirin
  5. Katmanı çoğalt
  6. Çift katmanı bir sonraki boyuta ölçeklendir
  7. .İco dosyanızda istediğiniz tüm boyutlar için çoğaltmaya / ölçeklemeye devam edin
  8. .İco olarak kaydet

Sizin durumunuzda, en büyük görüntüyle başlayabilir ve çoğaltılan her görüntü için küçültebilirsiniz veya yalnızca yeni katmanlar ekleyebilir ve o katmana istediğiniz belirli simge görüntülerini içe aktarabilirsiniz.


Bu yöntemle birden fazla renk derinliğini nasıl destekliyorsunuz?
Random832

Bunu kişisel olarak yapmak zorunda olduğumu söyleyemem, ancak bu yayın GIMP'in kaydetme üzerine her katman için bir renk ayarları iletişim kutusu açması gerektiğini söylüyor.
techturtle

Gimp 2.8.16'da dışa aktarmayı seçmelisiniz ancak yıllar sonra, ico'yu dışa aktardığınızda renk ayarları için bir iletişim kutusu olduğunu tahmin edebilirim.
Broots Waymb

1

İşte kabul edilen cevabı tarafından Rob W boyutları (16, 32, vs.) bir kereden fazla yazmak zorunda önlemek için önemsiz bir adaptasyon ile:

#!/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[@]}"

Burada logo.svgbiz istenilen ebatlarda (küçük dosyaları oluşturmak hangi girişi (kaynak) resmini temsil 16.png, 32.pngbiz o zaman çıkışı (sonuç) simgesi dosyasının içine birleştirmek, vs.) favicon.ico. Sen "16 24 32 48 64 72 128" için, örneğin çizgi 3, içinde boyutları listesini değiştirebilir ve convertbu komut G-Man tarafından açıklanan tekniği kullandığı için komut otomatik olarak buna göre adapte olacaktır burada onun cevabını bir inşa etmek dosya isimleri dizisi. Ve son olarak, 4. satırda oluşturulan PNG dosyalarının dosya isimleri dizisini tekrar kullanarak bağlantısını kaldırdık.


Bu komutu farkettim:

convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico

( user400747'nin yanıtında sunulana eşdeğer ) aslında ölçeklendirilmiş bitmap görüntüsü (kalite kaybı) ve katmanlar arka planı saydamlığını kaybetti.


1
(1) Esasen başkasının cevabını kopyaladınız. Bunu yaptıysanız ve başka bir şey yapmazsanız (evet, bazen insanlar bunu yapar), silme cevabınızı işaretlerim. Bunu yapmıyorum, çünkü ufak bir iyileştirme yaptınız. Ancak, başka birinin çalışmasını ne zaman kopyalarsanız, asıl yazarı isimle ve alıntı yaptığınız bilgilere bağlayarak onaylamanız gerekir. (2) Lütfen ne demek istediğinizi açıklamadan “bu daha esnek” gibi şeyler söyleme. … (Devamı)
Scott

(Devam ediyor)… (3) Olmamak için iyi bir nedeniniz yoksa ve ne yaptığınızı bildiğinizden emin olduğunuzda , her zaman kabuk değişkenlerini belirtmelisiniz . Aslında, kabuk değişkenleri alıntılamadan kullanan senaryolarda gördüğüm tüm örneklerde, sizinki (yani Rob W’ler ) en kötüsü arasında olabilir. Ancak yine de değişkenleri alıntılamak daha iyidir. (4) Neden unlinkdaha yaygın olanı kullanıyorsunuz rm?
Scott,

1

Birden çok boyutlu .PNG oluşturan ve bunları bir .ICO dosyasıyla birleştiren Windows toplu iş dosyası:

@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 dosyalarına ihtiyacınız yoksa, bunları silebilir (veya kaldırabilir) del FILEveya tüm PNG'leri kaldırabileceğiniz (sonra %imageMagick% %exportFileNames%"%~dp0%fileName%.ico") bir dizine kaydedebilirsiniz .

Umarım birine yardım eder. :)


0

Bence Axialis IconMaker ikon sorunlarına en iyi çözümdür. Sorunu muhtemelen sizin için çözecek 30 günlük bir deneme var.

Axialis'i yıllardır kullanıyorum ve birçok projede bunun gerçekten değerli bir ürün olduğunu söyleyebilirim. 30 güne ihtiyacınız olmayacak! Ha!


0

Üçüncü taraf bir simge düzenleme programı kullanmanız gerekir, çünkü MSPaint dosya başına yalnızca bir simge destekler. Orada bir çift arasında burada parçacığı simgesi editörleri, bazı ücretsiz, bazı ticari önerileri ile.

Bir simge düzenleyiciye yerleştikten sonra, simge biçimlerini ekleme yöntemi değişebilir ancak genellikle benzer olacaktır (bir düğmeye tıklayın veya yeni bir biçim eklemek için bir menü öğesini seçin). Çoğu program, bir simge biçimi / boyutu eklerken bir simge dosyasını içe aktarmanıza izin verir, ancak çoğu, yeniden boyutlandırarak mevcut dosyadan yeni bir biçim / boyut oluşturmanıza da izin verir.

Yeni bir format / boyut eklerken varolan oluştur seçeneğini kullanmayı seçerseniz , yeniden boyutlandırma algoritmasının çalışacağı en fazla veriye sahip olacağından, bunları zaten mevcut olan en büyük simge formatından oluşturduğunuzdan emin olun. . Ayrıca, bir XP / Vista simgesi oluştururken saydamlığı olan bir sürüm kullandığınızdan emin olun, çünkü çoğu program sıfırdan alfa kanalı oluşturmakta mükemmel değildir.


Bunu 200'den fazla simgeye yapmam gerekiyor. Bu simge düzenleyicilerden herhangi biri bir şeyi toplu olarak çalıştırabilir mi?
Suchipi

1
Toplu iş modunda bir simge düzenleyici gördüğümü hiç hatırlamıyorum. Toplu iş modunda bir resim düzenleyici kullanmayı deneyebilirsiniz, ancak herhangi bir resim düzenleyicinin çok formatlı simge desteğine sahip olup olmadığından emin değilim (en azından komut satırından / toplu moddan değil). Varsa, ImageMagick olacaktır. Ayrıca, soruya hacim ve parti modu gereksinimini de eklemelisiniz.
Synetech

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.