답변:
ImageMagick 에는 Linux 및 Windows (및 기타)에서 사용할 수있는 명령 줄 도구가 있습니다. 변환기 도구를 편리하게 "변환"이라고합니다. 다음은 몇 가지의 사용 설명서 .
그리고 여기에 Windows Installer를 구할 수 있습니다 .
ImageMagick은 이미지와 관련된 배치 작업과 즉시 관련해서는 안됩니다. 특히 ImageMagick이 SVG 변환에 적합하지 않은 경우입니다.
커맨드 라인에서 Inkscape 를 사용 하는 것이 좋습니다 .
inkscape in.svg --export-png=out.png
-z
옵션 을 사용하십시오 .
명령 줄이 기본적으로 작동하지 않았으며 100 파일을 변환하려고했습니다. 다음은 Windows 7에서 작동하게하는 방법입니다.
휴대용이 아닌 잉크 스케이프를 설치 하십시오!
모든 svg 파일을 한 폴더에 복사하십시오 (예 : "C : \ svgs \").
convert.bat
이 줄 안에 파일 을 만듭니다 .
FOR %%A IN (*.svg) DO "C:\Program Files (x86)\Inkscape\inkscape.exe" --export-png=%%A.png
(설치의 올바른 폴더를 가리 킵니다) :
관리자로 CMD를 엽니 다! 이렇게하려면 WIN 키를 누르고 cmd를 입력 한 다음 "cmd.exe"를 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오.
"C : \ svgs \"로 이동하여 다음을 입력하십시오 convert.bat
-모든 svg 파일이 PNG로 변환됩니다.
Windows 탐색기를 사용하여 변환 된 PNG 파일을 검색하십시오. 내 PC에서는 폴더에있었습니다.C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
희망이 도움이됩니다.
명령 줄의 해상도는 내가 볼 수있는 한 고정적으로 설정할 수 있었기 때문에 InkscapeBatch 도구를 사용했습니다 . 거기에서 모든 이미지를 상대적으로 늘리도록 DPI를 설정할 수 있습니다.
올바른 설정을 지정해야합니다. 그렇지 않으면 작동하지 않습니다. 여기 내가 한 일이 있습니다.
"완료"를 누른 후 도구 모음에서 "일괄 변환기 시작 ..."버튼을 눌러야합니다.
%%A
에 입력 파일 이름으로 다른 명령이 없을 수 있습니다. 또한 왜 관리자 모드에서만 작동한다고 가정합니까?
--export-dpi=100
여기서 100은 dpi의 값입니다.
InkscapeBatch 는 Windows에서 작업을 수행합니다. Inkscape가 필요합니다 .
SVG에서 PNG로 변환하는 경우 cairosvg ( https://cairosvg.org/ )가 ImageMagick보다 성능이 우수하다는 것을 알았 습니다. 디렉토리의 모든 파일에서 설치 및 실행 단계.
pip3 install cairosvg
.svg 파일이 들어있는 디렉토리에서 Python 쉘을 열고 다음을 실행하십시오.
import os
for file in os.listdir('.'):
name = file.split('.svg')[0]
cairosvg.svg2png(url=name+'.svg',write_to=name+'.png')
또한 원본 .svg 파일을 덮어 쓰지 않지만 동일한 이름을 유지합니다. 그런 다음 다음을 사용하여 모든 .png 파일을 다른 디렉토리로 옮길 수 있습니다.
$ mv *.png [new directory]
거의 2 시간 동안 이것과 씨름 한 후 나는 Inkscape로 정착했다. 여러 가지 해상도로 많은 파일을 일괄 변환해야했기 때문에 Powershell 스크립트를 만들었습니다. 106 SVG로 컴퓨터가 약 5 초 동안 정지되었으므로 사용할 때주의하십시오.
# ENTER THE FULL PATH TO THE INKSCAPE EXECUTABLE
$inkscapeExe = "C:\Program Files\Inkscape\inkscape.exe"
# ENTER THE PATH TO THE FOLDER CONTAINING THE SVGs
$svgFolder = "C:\Images\SVG"
# ENTER THE DESIRED WIDTH
$width = 120
# ENTER THE DESIRED HEIGHT
$height = 120
$svgFiles = Get-ChildItem $svgFolder -Filter *.svg
foreach ($svgFile in $svgFiles)
{
$inputParam = $svgFile.FullName
$outputParam = "--export-png=" + $svgFile.FullName + "-" + $width + "x" + $height + ".png"
$widthParam = "-w" + $width
$heightParam = "-h" + $height
& $inkscapeExe $inputParam $outputParam $widthParam $heightParam
}
&
운영자는 새로운 프로세스를 시작하고 당신이 SVG 파일을 가지고이 스크립트는 많은 새로운 inkscape.exe 프로세스로 만들 수 있도록 즉시 계속됩니다. 이것이 컴퓨터를 잠시 동안 느리게 만듭니다.
| Out-Null
시작하는 줄의 끝 부분에 넣으면 &
한 번에 하나씩 inkscape.exe 명령을 실행해야하므로 훨씬 효과적입니다.
Windows 용 Bash / Ubuntu의 SVG가있는 폴더에서 다음을 사용할 수 있습니다. 그러나 ImageMagick은 먼저 래스터 화 한 다음 크기를 조정하여 이상한 결과물을 만듭니다.
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
또한 잘 작동하는 것처럼 보이는 Inscape 기반 솔루션을 참조하십시오 (다른 스레드에서 링크 손실). mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
find -name "*.svg" -exec inkscape {} -e {}.png \;
이 버전을 선호하지만 ls | grep ".svg" | xargs -I file inkscape file -e file.png
파일이 알파벳순으로 처리되기 때문에 —이 파일을 사용할 때는 그렇지 않습니다find
ImageMagick 은 Windows에서 사용할 수 있으며 SVG와 PNG 및 ICO (다른 것들 중에서)간에 변환 할 수 있습니다. 출력 파일의 크기 및 기타 속성을 설정할 수 있습니다.
배치를 실행하기 위해 작동하는 단일 명령을 찾을 수 없으므로 파일 목록을 생성하고 일련의 명령을 작성하여 작동하도록했습니다. 이 지침은 모든 버전의 Windows에서 작동합니다. 모든 타이핑 명령어는 따옴표를 제외하고 그 사이의 모든 것을 포함합니다.
이렇게하려면 Inkscape, MS Excel 또는 유사한 스프레드 시트 편집기 및 목록 생성기가 필요합니다. 여기에 훌륭한 프리웨어 목록 생성기가 있습니다 : https://www.portablefreeware.com/?id=1171
이를 올바르게 수행 한 경우 각 파일 이름에 대해 다음과 같은 행이 하나씩 있어야합니다. | inkscape C : \ SVG \ | Filename1.svg | --export-png = C : \ PNG \ | 파일 이름 1.png |
누군가의 삶을 편하게 해줄 수 있기를 바랍니다. 제임스
카이의 대답 은 가깝지만 저에게는 효과가 없었습니다. 그러나 몇 가지 약간의 조정으로 처음부터 완벽하게 작동했습니다.
convert.bat
convert.bat
자주 사용하는 텍스트 / 코드 편집기에서 열고 다음을 입력하십시오.FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
( inkscape.exe
위치는 PC의 실행 프로그램 위치와 일치해야하며, 두 번째 이전 --export-png
은 %%A
변환되는 SVG 파일입니다.)
convert.bat
실행하려면 두 번 클릭 하면 변환 결과가 에코됩니다.새 파일을 보려면 Windows 폴더를 새로 고쳐야 할 수도 있지만 모두 원본 SVG와 동일한 위치에 만들어 져야합니다.
어떤 이유로 든 imagemagick 또는 inkscape를 사용할 수 없습니다. 난 단지 수동으로이 사이트를 사용하는 단지 변환 (12 개) 파일을했다 : http://svgtopng.com/는 치료를했다.
주어진 디렉토리의 모든 svg 파일을 ico 파일로 변환하는 ImageMagick 기반 솔루션은 다음과 같습니다.
mogrify -format ico -density 1200 -background transparent -trim -resize 256x256 -gravity center -extent 256x256 -define icon:auto-resize *.svg
설명:
mogrify
:과 convert
같지만 여러 파일을 일괄 처리 할 수 있습니다.-format ico
: 대상 파일 형식입니다. .ico
mogrify가 기본적으로 수행하는 것처럼 원본 파일을 덮어 쓰지 않고 파일을 만듭니다 .-density 1200
: ImageMagick이 SVG를 래스터 화해야하는 대상 픽셀 크기를 지정할 수 없으므로 (기본 밀도로 래스터 화 한 다음 크기를 조정) SVG를 매우 높은 해상도 (1200dpi)로 래스터 화하여 이미지를 보장합니다. 업 스케일 대신 256x256 으로 다운 스케일됩니다.-background transparent
: 배경이 투명하게 렌더링됩니다.-trim
: 이미지 주위의 기존 테두리를 제거합니다.-resize 256x256
: 가로 세로 비율을 유지하면서 가장 긴면이 256 픽셀이되도록 이미지 크기를 조정합니다.-gravity center -extent 256x256
: 단변이 256 픽셀이되도록 캔버스를 확대합니다. 기존 이미지가 가운데 정렬됩니다. 이것은 ICO 파일의 기초로 정사각형 이미지가 필요하기 때문에 필요합니다.-define icon:auto-resize
: ICO 파일에는 256x256 이미지뿐만 아니라 권장되는 모든 축소 된 해상도 (예 : 32x32)도 포함하십시오.여기에 주어진 대부분의 답변 은 원하는 크기 의 질문 부분을 무시합니다 . convert
SVG를 "업 스케일"할 때 사용하여 만족스러운 결과를 얻지 못했습니다 . inkscape
더 나은 작업을 수행하고 배경 투명도를 유지합니다.
사용 사례에 따라 다음 옵션 중 하나를 사용하십시오.
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
너비와 높이를 모두 지정해도 종횡비 는 유지 되지 않습니다 .
한 번에 많은 파일을 변환하려면 유스 케이스에 맞게 ( bash
또는 호환 가능) 다음을 조정하십시오 .
for f in *.svg; do
inkscape $f -d 300 -e ${f%.*}.png
done
apt install imagemagick