web-dev-qa-db-ja.com

.icoファイルに複数のサイズを埋め込むにはどうすればよいですか?

たとえば、複数のサイズで異なる画像を持つ.icoアイコンを見てきました。 16x16、32x32、48x48、128x128、256x256。 Windowsでは、サイズごとに既存の.icoファイルがある場合、この方法で複数のサイズをサポートするアイコンファイルを作成するにはどうすればよいですか? 200以上のファイルに対してこれを行うことを望んでいるので、cmdから行うのが理想的であることに注意してください。

17
Suchipi

ImageMagick (Windows/Mac/Linux)には convert と呼ばれるコマンドラインツールが含まれており、1つのアイコンに複数の画像をパックするなど、さまざまな用途に使用できます:

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

前のコマンドは5つのPNG画像を取り、それらを1つの.icoファイルに結合します。

他の回答とは異なり、このメソッドは簡単にバッチスクリプトで使用して、複数のアイコンファイルを自動的に生成できます。私のプロジェクトの1つでは、単一のベクター画像(SVG)を使用しており、 Inkscape を使用してさまざまなサイズのpngを生成し、続いてconvertを使用してアイコンコンテナーを作成しています。これは縮小された例です(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
29
Rob W

ImageMagickのより良いコマンド:

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

[〜#〜] gimp [〜#〜] でこれを無料で行うことができます。これを行うための簡単な説明があります ここ

引用するには:

  1. Gimpで画像を開く
  2. キャンバスを正方形にします
  3. レイヤーを画像に合わせてサイズ変更
  4. レイヤーを.icoファイルの最大サイズ(64ピクセルなど)にスケーリングします。
  5. レイヤーを複製する
  6. 複製レイヤーを次のサイズにスケーリングします
  7. .icoファイルに必要なすべてのサイズの複製/スケーリングを続ける
  8. .icoとして保存

あなたのケースでは、最大の画像から始めて、複製された画像ごとに縮小するか、新しいレイヤーを追加して、そのレイヤーに必要な特定のアイコン画像をインポートすることができます。

6
techturtle

以下は 受け入れられた回答Rob 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.png32.pngなど)を作成し、それを出力(結果)に結合します。アイコンファイル、favicon.ico。 3行目のサイズのリストを「16 24 32 48 64 72 128」などに変更できます。このスクリプトはG-Manで説明されている手法を使用するため、convertコマンドはそれに応じて自動的に適応します ここでの彼の回答 ファイル名の配列を作成します。最後に、ファイル名の配列を再度使用して、4行目で作成されたPNGファイルのリンクを解除(削除)します。


コマンドに気づきました:

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

ser400747の回答 に示されているものと同等)実際にスケーリングされたビットマップ画像(品質の低下)とレイヤーの背景の透明性が失われました。

1
Andris Petrams

複数のサイズの.PNGを作成し、それらを1つの.ICOファイルにマージするWindowsバッチファイル:

@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"以降)。

それが誰かを助けることを願っています。 :)

1
Froschkoenig84

Axialis IconMaker がアイコンの問題の最良の解決策であると私は考えています。おそらくあなたのために問題を解決する30日間のトライアルがあります。

私はAxialisを長年使用してきましたが、非常に多くのプロジェクトで、それが本当に価値のある製品であることを証明できます。 30日は必要ありません!ハ!

0
Jerry Nixon

MSPaintはファイルごとに1つのアイコンしかサポートしないため、サードパーティの icon-editing program を使用する必要があります。 カップルここにスレッド があり、アイコンエディターの推奨事項がいくつかあります。

アイコンエディターを使用すると、アイコンの形式を追加する方法は異なりますが、一般的には似ています(ボタンをクリックするか、メニュー項目を選択して新しい形式を追加します)。ほとんどのプログラムでは、アイコンの形式/サイズを追加するときにアイコンファイルをインポートできますが、ほとんどのプログラムでは、サイズを変更して、既存の形式/サイズから新しい形式/サイズを作成できます。

新しいフォーマット/サイズを追加するときにcreate-from-existingオプションを使用する場合は、最大のアイコンフォーマットから作成してください。サイズ変更アルゴリズムで使用できるほとんどのデータがあるため、すでに利用可能です。また、XP/Vistaアイコンを作成するときは、透明なバージョンを使用してください。ほとんどのプログラムは、アルファチャネルを最初から作成するのが得意ではありません。

0
Synetech

Matthias Benkmannの png2ico を試してみてください。これは無料で、マルチサイズのPNGを1つのicoファイルにパックできます。

0
Dimitri C.