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


16

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

回答:


28

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

1
私は、ImageMagick convertを調べるたびに新しい方法を学んでいるように感じます。答えてくれてありがとう!
スチピ

どのように反対をしますか?a .icoに含まれるサイズに基づいて、a を複数のPNGに変換しますか?
フリム14

2
@Flimmはconvert favicon.ico favicon.png生成favicon-0.pngfavicon-1.pngフレーム内のすべてのアイコンのために、等。画像の寸法を知りたい場合identifyは、PNGファイルでコマンドを使用します。
ロブW 14

convert <icon.png> -resize 64x64inkscape の代わりに独自のimagemagicksを使用できます
-kumarharsh

-dither Noneデフォルトの256色への変換によりアイコンにノイズが追加されたため、convertコマンドに追加しました
ジェームスロス

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. 64ピクセルなど、.icoファイルの最大サイズにレイヤーをスケーリングします
  5. レイヤーを複製する
  6. 複製レイヤーを次のサイズに拡大縮小する
  7. .icoファイルで必要なすべてのサイズの複製/スケーリングを続ける
  8. .icoとして保存

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


この方法で複数の色深度をどのようにサポートしますか?
Random832

私が個人的にそれをしなければならなかったと言うことはできませんが、この投稿はGIMPが保存時に各レイヤーの色設定ダイアログをポップアップするべきだと言っています。
テクトル

Gimp 2.8.16でエクスポートすることを選択する必要がありますが、数年後、icoをエクスポートするときに色設定のダイアログがあると確信できます。
Broots Waymb 16

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.png32.png、我々は、出力(結果)アイコンファイルに結合するなど)favicon.ico。3行目のサイズのリストを、たとえば「16 24 32 48 64 72 128」に変更すると、convertこのスクリプトはG-Man の回答で説明されているテクニックを使用して、ファイル名の配列。最後に、ファイル名の配列を再度使用して、4行目で作成されたPNGファイルのリンクを解除(削除)します。


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

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

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


1
(1)あなたは本質的に他の誰かの答えをコピーしました。あなたがそれをし、それ以上何もしなかった場合(そう、人々は時々そうします)、私はあなたの答えに削除フラグを立てます。あなたは小さな改善をしたので、私はそれをしていません。しかし、誰か他の人の作品をコピーするときはいつでも、元の作者を名前で、そして引用している情報にリンクすることで認めるべきです。(2)意味を説明せずに、「これはより柔軟です」などと言ってはいけません。…(続き)
スコット

(続き)...(3)あなたがいないと正当な理由がない限り、あなたは常にシェル変数を引用すべきである、とあなたがしていることを確認あなたは何をやっている知っています。実際、シェル変数を引用符なしで使用するスクリプトで見たすべての例の中で、あなた(つまりRob W’s)は最も悪いものの1つかもしれません。それでも、変数を引用する方が良いです。(4)unlinkより一般的なものの代わりに使用するのはなぜrmですか?
スコット

1

複数のサイズの.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")。

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


0

私の意見では、Axialis IconMakerはアイコンの問題に対する最適なソリューションです。おそらくあなたのために問題を解決する30日間の試用版があります。

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


0

MSPaintはファイルごとに1つのアイコンのみをサポートするため、サードパーティのアイコン編集プログラムを使用する必要があります。あるカップルここでスレッドアイコンエディタの勧告に、いくつかの無料、いくつかのコマーシャルが。

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

新しい形式/サイズを追加するときに既存の作成オプションを使用することを選択した場合は、サイズ変更アルゴリズムが機能するためのデータが最も多くなるため、すでに利用可能な最大のアイコン形式から作成するようにしてください。また、XP / Vistaアイコンを作成するときは、透明度のあるバージョンを使用するようにしてください。ほとんどのプログラムは、アルファチャネルを最初から作成するのに向いていないためです。


200以上のアイコンに対してこれを行う必要があります。これらのアイコンエディターのいずれかがバッチで実行できますか?
Suchipi

1
バッチモードのアイコンエディターを見たことはありません。画像エディタをバッチモードで使用してみることもできますが、画像エディタにマルチフォーマットアイコンがサポートされているかどうかはわかりません(少なくともコマンドライン/バッチモードからではありません)。ある場合は、ImageMagickになります。また、質問にボリュームとバッチモードの要件を追加する必要があります。
Synetech

0

Matthias Benkmannのpng2icoを試してみてください。無料で、マルチサイズのpngファイルを単一のicoファイルにパックできます。


これは、しかし、いくつかの興味深いの制限がありますWidth must be multiple of 8 and <256. Height must be <256.
フランソワ・ボタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.