정사각형 SVG를 모든 크기의 ICO로 변환하는 방법?


24

InkScape에 아이콘을 그리고 합리적인 해상도 (16x16, 32x32, ... 256x256 등)에 대한 스프라이트를 포함하는 ICO 파일로 내보내려고합니다. Photoshop, CorelDraw 등과 같은 거대하고 비싼 소프트웨어를 사용하지 않고 어떻게 이것을 할 수 있습니까?


2
빠른 검색을 통해 InkScape에서 단일 ICO를 내보낼 수있는 방법은 없지만 김프와 같은 무료 소프트웨어를 추가로 사용하는 방법에 대한 제안이 많이 있습니다. 그 옵션들을 확인 했습니까? 그들이 당신을 위해 작동하지 않은 경우, 왜 안되는지 말할 수 있습니까?
usr2564301

@RadLexus가 시도한 것은 많은 온라인 도구이며, 모두 이해할 수있는 한 단일 크기 ICOn을 만드는 것을 의미합니다.
Ivan

5
여러 크기의 ICO를 만드는 방법을 알고 싶습니까? 이 스택 오버플로 답변의 옵션을 사용해보십시오 : stackoverflow.com/questions/4354617/… (다시 간단한 Google 쿼리로 찾을 수 있습니다 ...)
usr2564301

1
ico 파일 로 내보내는 것 같은 Inkscape 확장명 이 있지만 지금은 제대로 작동하는지 확인할 시간이 없습니다.
Paolo Gibellini

아래 중 귀하의 질문에 대한 답변을 찾은 경우 허용되는 답변으로 표시하십시오.
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투명한 배경을 유지하는 데 사용 합니다.
Robert Hume

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

작업을 단순화하기 위해 간단한 배치 또는 셸 파일을 사용할 수도 있습니다.
Paolo Gibellini

3
이미 래스터 화 된 PNG의 크기를 조정하는 대신 SVG에서 직접 많은 PNG 크기를 내보내는 것이 더 좋지 않습니까?
heltonbiker

1
다른 사람이 궁금한 경우를 대비하여 "..."는 문자가 아닙니다. favicon.ico 파일에 넣을 다른 png 파일 크기를 나타냅니다.
Nostalg.io

@ Nostalg.io 감사합니다! 나는 대답을 편집했다.
philippe_b

5

배쉬 버전 ...

#!/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를 필요한 크기로 내보내는 스크립트를 만듭니다. Android 아이콘을 만드는 데 도움이되도록이 .bat 스크립트를 코딩했습니다.

@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 % var는 Inkscape 설치 경로에 적합해야합니다.
  • 이 스크립트는 모든 내보내기 명령을 임시 파일로 에코하여 잉크 스케이프 프로세스를보다 잘 관리합니다. "shell"cli param은 명령 당 인스턴스를 생성하는 대신 단일 인스턴스를 사용하여 더 많은 명령을 허용합니다.

이 매개 변수를 사용하면 Inkscape가 대화식 명령 줄 셸 모드로 들어갑니다. 이 모드에서는 프롬프트에서 명령을 입력하면 각 명령에 대해 새로운 Inkscape 사본을 실행할 필요없이 Inkscape가 명령을 실행합니다. 이 기능은 주로 스크립팅 및 서버 사용에 유용합니다. 새로운 기능은 추가하지 않지만 명령 줄 작업 (예 : 내보내기 또는 변환)을 수행하기 위해 Inkscape를 반복적으로 호출하는 스크립트의 속도 및 메모리 요구 사항을 향상시킬 수 있습니다. 셸 모드의 각 명령은 완전한 유효한 Inkscape 명령 줄이어야하지만 Inkscape 프로그램 이름이 없어야합니다 (예 : "file.svg --export-pdf = file.pdf"). ( 잉크 스케이프 매뉴얼 참조 )

2) 생성 된 모든 PNG를 단일 ICO 파일로 병합하는 philippe-b answer에 명시된 변환 구문을 위 스크립트에 추가 하십시오.

3) 선택적으로 내 보낸 PNG를 더 이상 필요하지 않으므로 제거합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.