正方形のSVGをすべてのサイズのICOに変換する方法は?


24

InkScapeでアイコンを描画し、すべての妥当な解像度(16x16、32x32、... 256x256など)のスプライトを含むICOファイルにエクスポートしたいと思います。どのようにこれを行うことができますか(Photoshop、CorelDrawなどの巨大で高価なソフトウェアを使用せずに)?


2
クイック検索では、InkScapeからICOを1つでもエクスポートする方法はないことがわかりましたが、GIMPなどの追加の(無料の)ソフトウェアを使用してそれを行う方法に関する多くの提案があります。これらのオプションをチェックしましたか?彼らがあなたのために働かなかった場合、あなたはなぜそうではないか教えてもらえますか?
usr2564301

私が試した@RadLexusは、いくつかのオンラインツールであり、それらはすべて、理解できる限り、シングルサイズのICOnを作成することを意味します。
イヴァン

5
それでは、複数サイズのICOを作成する方法を知りたいですか?このStack Overflowの回答のオプションを試してください:stackoverflow.com/questions/4354617/…(再び、単純なGoogleクエリで見つかりました...)。
usr2564301

1
icoファイルとしてエクスポートするように見えるInkscape拡張機能がありますが、動作するかどうかを試す時間は今のところありません。
パオロジベッリーニ

質問に答えるために以下のいずれかを見つけた場合、受け入れられた答えとしてマークしてください。
DᴀʀᴛʜVᴀᴅᴇʀ

回答:


24

ImageMagickをすぐに使用できます。

convert -density 384 icon.svg -define icon:auto-resize icon.ico

3
なぜその密度ですか?
-naught101

1
わからない。他の場所からコピー&ペーストしただけだ。
heltonbiker

@ naught101は密度フラグのドキュメントです-ただし、画像サイズ、dpi、およびその中間画像のラスタライズで非常に具体的なことを行わない限り、それはかなり不必要な手順のようです。imagemagick.org/script/command-line-options.php#density
CreationTribe

7
convert -background none icon.svg -define icon:auto-resize icon.ico背景を透明に保つために使用します。
ロバートヒューム

2
magick convert -background none icon.svg -define icon:auto-resize icon.ico私のために働いた。
intotecho

15

コマンドラインソリューション:

1)InkScapeを使用してSVGをPNGにエクスポートします

2)このPNG画像のサイズをImageMagickで希望するサイズに変更します。

magick convert master.png -resize 16x16 16.png
magick convert master.png -resize 32x32 32.png
magick convert master.png -resize 48x48 48.png

3)PNG画像をICOに変換します。

magick convert 16.png 32.png 48.png icon.ico

4)ICOにすべてが含まれていることを確認します。

identify icon.ico
icon.ico[1] ICO 16x16 16x16+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
icon.ico[0] ICO 32x32 32x32+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
icon.ico[0] ICO 48x48 48x48+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000

作業を簡素化するために、単純なバッチまたはシェルファイルを使用することもできます。
パオロジベッリーニ

3
既にラスタライズされたPNGのサイズを変更するのではなく、SVGから多くのpngサイズを直接エクスポートする方が(少し複雑な場合でも)優れていると思いませんか?
heltonbiker

1
他の誰かが好奇心case盛な場合に備えて、「...」は文字通りではありません。favicon.icoファイルに詰め込む他のpngファイルサイズを表します。
Nostalg.io

@ Nostalg.io良い発言、ありがとう!答えを編集しました。
philippe_b

5

Bashバージョン...

#!/bin/bash

set -ex

svg=$1

size=(16 32 24 48 72 96 144 152 192 196)

echo Making bitmaps from your svg...

for i in ${size[@]}; do
  inkscape $svg --export-png="favicon-$i.png" -w$i -h$i --without-gui
done

echo Compressing...

## Replace with your favorite (e.g. pngquant)
# optipng -o7 favicon-*.png
pngquant -f --ext .png favicon-*.png --posterize 4 --speed 1

echo Converting to favicon.ico...

convert $(ls -v favicon-*.png) favicon.ico

## Clean-up maybe?
# rm favicon-*.png

echo Done

使用法: ./favicon.sh your-square-svg-file.svg

パッケージマネージャーのinkscape imagemagick optipng(オプション)が必要です。

Win10とInkscapeがうまくいかなかったので、bashシェル用にこれを再作成する方が簡単だとわかりました。これはLinux用Windowsサブシステム内でテストされましたが、Macでも動作するはずです。

:私は気にサイズ選択するには、このリファレンスを使用しhttps://github.com/audreyr/favicon-cheat-sheetをsize特定のニーズに合わせてアレイを調整します。


4

このアプローチをお勧めします:

1)SVGを必要なサイズにエクスポートするスクリプトを作成します。この.batスクリプトをコーディングして、Androidアイコンを作成できるようにしました

@echo off
set file="%~f1"
set path=%~dp1
set inkscape="C:\Program Files\Inkscape\inkscape.exe"

echo Le icone saranno salvate in %path%
echo Produzione icone applicative

echo %file% --export-png="%path%/ic32.png" -w32 -h32 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic48.png" -w48 -h48 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic72.png" -w72 -h72 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic96.png" -w96 -h96 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic144.png" -w144 -h144 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic192.png" -w192 -h192 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic512.png" -w512 -h512 > %~dp1/commands.txt
%inkscape% --shell < %~dp1/commands.txt
erase "%~dp1/commands.txt"

echo Procedura terminata

  • 定義された%inkscape%、Inkscapeのインストールパスに適している必要があります
  • このスクリプトは、すべてのエクスポートコマンドを一時ファイルにエコーして、inkscapeプロセスの管理を改善します。「shell」cliパラメーターは、コマンドごとにインスタンスを生成する代わりに、単一のインスタンスを使用してより多くのコマンドを受け入れます。

このパラメーターを使用すると、Inkscapeは対話型のコマンドラインシェルモードに入ります。このモードでは、プロンプトでコマンドを入力すると、コマンドごとにInkscapeの新しいコピーを実行することなく、Inkscapeがコマンドを実行します。この機能は、スクリプトとサーバーの使用に最も役立ちます。新しい機能は追加されませんが、Inkscapeを繰り返し呼び出してコマンドラインタスク(エクスポートや変換など)を実行するスクリプトの速度とメモリ要件を改善できます。シェルモードの各コマンドは、完全な有効なInkscapeコマンドラインである必要がありますが、Inkscapeプログラム名は含みません(例: "file.svg --export-pdf = file.pdf")。(inkscapeのマニュアルを参照

2)上記のスクリプトに、生成されたすべてのPNGを単一のICOファイルにマージするphilippe-b回答に記載されている変換構文を追加します

3)必要に応じて、エクスポートされたすべてのPNGを削除します(オプション)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.