Mac OS X에서 SVG를 PNG로 변환하기위한 명령 줄 응용 프로그램


167

Mac OS X에서 실행되는 SVG를 PNG로 변환 할 수있는 명령 줄 프로그램이 있습니까?

편집 : Dylan B는 ImageMagick으로 좋은 대답을했습니다. 참고로 MacPorts를 사용하여 Mac OS X에서 SVG를 지원하는 ImageMagick을 설치하려면

port install imagemagick +rsvg

2
당신이 구글 크롬을 가지고 있다면 다른 방법을 찾을 필요가 없습니다. superuser.com/questions/134679/…
nopole

cairosvg.org 는 python3에서 작동하며 문제가없는 것 같습니다. pip3 install cairosvg
JayRizzo

답변:


234

또는 아무것도 설치하지 않고 :

qlmanage -t -s 1000 -o . picture.svg 

너비가 1000 픽셀 인 picture.svg.png를 생성합니다.

OS X 10.6.3에서만 테스트했습니다.


38
불행히도 이것은 이미지를 정사각형으로 자릅니다.
Martijn Pieters

7
아, qlmanage -t훑어보기에서 사용하는 썸네일을 제공합니다 (Finder 등). 영리한 아이디어. 안타깝게도 이러한 축소판은 특히 텍스트가 관련된 경우 버그가있을 수 있습니다.
ShreevatsaR

7
1 사분면에 svg 파일이 포함 된 이미지가 생성됩니다. 자동 자르지 않습니다. 명사 프로젝트에서 파일을 변환하려고 시도했습니다.
Alex Cook

7
이 솔루션은 투명성을 고려하지 않습니다. rsvg-convert@ahti의 답변에 있는 도구 가 전에 나에게 효과적이었습니다.
BenR

3
-s옵션 뒤에 너비와 높이 매개 변수를 모두 넣는 것은 효과가 없었습니다. 여전히 사각형으로 자릅니다. 매우 실망스러운!
Erik van der Neut

107

나에게 가장 적합한 도구는이라는 것을 알았다 rsvg-convert.

brew에서 찾을 수 있으며 brew install librsvg다음과 같이 사용됩니다.

rsvg-convert -h 32 icon.svg > icon-32.png

(이 예제는 32px 높이의 png를 만듭니다. 너비는 자동으로 결정됩니다.


이것은 유일한 매버릭스에 나를 위해 일 하나입니다 commons.wikimedia.org/wiki/...
아론 Ahmadia

실제로 이것은 작동했지만 ImageMagick의 convert오류가 발생하고 복잡한 SVG를 숨기지 못했습니다.
Brice

7
이것이 OS X Yosemite +1에서 찾은 최고의 솔루션입니다!
Greg Martin

이것은 내 SVG 중 일부에 이상하게 실패했습니다. qlmanage대답은 그들 모두를 위해 일하지만 원하지 않는 흰색 배경을 넣어.
sudo

1
을 사용 rsvg-convert하면 결과로 생성 된 .png의 크기가 올바른 데 원래 색상 대신 이미지가 모두 검은 색으로 나타납니다. 로 qlmanage이미지 정사각형으로 잘립니다. 아직도 해결책을 찾고 있습니다 :-(
Erik van der Neut

43

ImageMagick매우 다재다능한 명령 줄 이미지 편집기로, GUI가 있다면 Photoshop과 경쟁 할 것입니다. 그러나 어쨌든 누가 필요합니다. :피

설치 후 다음과 같은 것이 .svg를 .png로 변환합니다.

$ convert picture.svg picture.png

원본 .svg는 삭제되지 않습니다.


일종의 GUI가 display있습니다.
Ignacio Vazquez-Abrams

1
Fink와 함께 ImageMagick을 설치할 때 svg를 png로 변환 할 수 없었습니다. 약간의 오류가있었습니다. librsvg2-bin도 설치해야한다는 것이 밝혀졌습니다.
tst

librsvg2-bin이 설치되어 있지 않으면 (OS X와 ​​같이) 실패합니다. OS X에 설치하는 방법을 찾지 못했습니다.
John Sheehan

3
흐릿한 이미지를 생성 할 때 SVG의 크기를 조정하려는 경우에는 잘 작동하지 않습니다.
Behrang

3
모든 SVG 파일도 올바르게 변환하지는 않습니다. 적어도 qlmanage는 이미지의 모든 부분을 얻었습니다.
Johan

28

Commandline-Interface를 사용하는 Inkscape 는 나에게 최고의 결과를 제공합니다.

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

좋은 점은 밀도를 망칠 필요없이 결과 이미지의 정확한 픽셀 크기를 지정할 수 있다는 것입니다.


이것은 나를 위해 일하고 있습니다! - 잉크 스케이프로 제작 더 큰 SVG 되 잖아
matheszabi

이것은 내 손으로 쓴 svg를 올바르게 렌더링 한 유일한 방법입니다
Griffin

변환은 SVG에서 좋은 PNG 파일을 생성하지 않습니다. 내가 찾은 가장 좋은 방법은 Inkscape를 사용하는 것입니다.
ol_v_er

이것은 나를 위해 작동하지만 매우 흐린 파일을 만듭니다.
Marcin

3
파일을 찾는 데 문제가있어서 다음과 같이 실행하십시오.inkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Andrei

16

좋아, Chrome이 있으면 Mac에서 간단한 방법을 찾았습니다.

한 문장으로, svg웹 페이지 에서 이미지 를보고 ( html파일에 있어야 함 ) 이미지를 마우스 오른쪽 단추로 클릭하고 "이미지 복사"를 선택하고 미리보기 앱에 붙여 넣습니다.

단계 :

  1. svg하드 드라이브에 파일을 다운로드하거나 가지고 있습니다.somefile.svg
  2. 이제 동일한 폴더에서 tmp.html다음 줄이 포함 된 html 파일 을 만드십시오 .<img src="somefile.svg">
  3. 이제 Chrome에서 해당 html 파일을여십시오.
  4. 이미지가 보여야합니다. 이제 이미지를 마우스 오른쪽 버튼으로 클릭하고 "이미지 복사"를 선택하십시오.
  5. Mac의 미리보기 앱으로 이동하여 "File -> New from Clipboard"
  6. 이제 File -> Save파일과 png파일이 있습니다. (또는 다른 파일 형식).

Mac OS X El Capitan의 현재 Chrome (버전 48.0)에서 테스트되었습니다.

업데이트 : Chrome의 제한으로 인한 것인지 확실하지 않습니다. Chrome 58.0을 사용하여 SVG 파일을 시험 해보고 위의 방법으로 작은 이미지를 얻습니다. 이 경우도 볼 수 있습니다.

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">

예를 들어 Mac을 사용 CmdShift4하거나 CmdShift3Mac 등에서 스크린 샷을 작성하기에 충분한 화면 이미지가 있어야합니다 . Chrome 창의 크기를 화면에서 허용되는 최대 크기로 조정하십시오.


똑똑한 솔루션!
Manu

1
브라우저와 정확히 동일하게 렌더링되므로 실제로 최상의 결과를 얻을 수 있습니다.
Jason Haslam

결과 이미지는 나에게 매우 열악한 해상도였습니다
Michael

독창적 인 :)이지만 매우 큰 SVG의 경우 @Michael이 언급했듯이 결과 이미지의 해상도가 너무 낮습니다.
waldyrious

5

한 번에 많은 작업을 수행하려는 경우 다음을 수행 할 수 있습니다.

mogrify -format png *.svg

크기 등을 즉시 조정할 수있는 옵션도 있습니다.


3
mogrifyImageMagick의 파입니다.
ShreevatsaR

잘 작동하지만 잔인하게 느립니다.
Meekohi

-1? 누군가 이것이 도움이되지 않는다고 생각합니까? 오류가 무엇입니까?
Defenestration7

2
나는 downvoted 한 사람이 아니지만 주목할 가치가 있다는 것은 ImageMagick이 크기를 조정하기 전에 svg를 임의의 크기의 래스터 이미지로 어리석게 변환하여 결과가 흐릿하다는 것입니다.
Dae

4

Apache Batik을 사용해보십시오 .

java -jar batik-rasterizer.jar FILES

또한 일괄 변환을 지원하며 다른 유용한 옵션이 많이 있습니다.


4

이것을 위해 node / npm을 사용하여 svgexport 를 만들었습니다. 이것은 크로스 플랫폼이며 다음과 같이 간단 할 수 있습니다

svgexport input.svg output.png

이것은 지금까지 사용하고 기억하는 가장 쉬운 방법이었습니다. 또한 내 경우에는 올바른 결과를 얻은 유일한 사람입니다.
Marko Grešak

결과 해상도는 나에게 좋지 않았다.
Michael

3

phantomjs 를 사용하여 svg를 렌더링 할 수도 있습니다 . 장점은 기본적으로 헤드리스 WebKit이기 때문에 브라우저처럼 렌더링한다는 것입니다.

다운로드 한 후에 는 예제 폴더에서 phantomjs (이진) 및 rasterizer.js 파일 이 필요 합니다.

phantomjs examples/rasterize.js Tiger.svg out.png

1
참고로을 사용하여 설치할 수 있습니다 brew cask install phantomjs. 내 설치에서 예제 폴더는 경로에 /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/있습니다.
waldyrious

2

이것이 내가 사용한 것입니다 :

brew install imagemagick --with-librsvg

그런 다음 다음 명령을 실행하십시오.

find . -type f -name "*.svg" -exec bash -c 'convert $0 $0.png' {} \; rename 's/svg\.png/png/' *

도움이 되길 바랍니다.


1

나는 내 리눅스 에서이 명령을 사용합니다. 그것은 당신에게도 효과가 있습니다.

mogrify +antialias -density 2000 -verbose -format png *.svg

"밀도"인수가 없으면 비트 맵이 매우 픽셀 화된다는 것을 알게되었습니다. 필요에 따라 -density 값을 변경하십시오.


2
밀도가 있더라도 변환은 벡터 이미지만큼 선명한 이미지를 생성하지 않습니다. 대신 Apache Batik을 사용해보십시오.
Behrang

1

다른 매개 변수를 사용하는 ImageMagick의 변환 명령이 저에게 도움이되었습니다. 다음은 모든 코어를 사용하기 위해 여러 프로세스로 작업을 나누는 배치 Bash 스크립트 솔루션입니다! 필요에 따라 수정하십시오.

batchConvertToSVG.sh (프로세스 수를 인수로 사용함) :

end=$(( $1 - 1 ))
for i in `seq 0 $end`;
        do
            echo Spawning helper $i of $end
                ./convertToSvgHelper.sh $i $1 &
        done 

convertToSvgHelper.sh :

n=$1
for file in ./*.svg; do
   filename=${file%.svg}
   echo converting file named $filename
   test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
   n=$((n+1))
   n=$((n%$2))
done

0

앞서 언급했듯이 ImageMagick은 트릭을 수행합니다. 방금 개선 된 ImageMagick 포크 인 GraphicsMagick 에 대한 요점을 추가하고 싶었습니다 (핑크를 통해 설치할 때 종속성 부풀림이 훨씬 적음).


0

SVG 파일의 전체 폴더에서 PNG로 일괄 변환을 수행 할 수 있습니다. Inkscape 명령 행 인터페이스를 사용하여 너비가 80px 인 png 파일을 생성했습니다.

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

png는 원래 이름으로 저장됩니다 * .png


0

아무것도 설치하지 않은 또 다른 방법. 그러나 명령 줄에는 없습니다.

  1. Safari에서 .svg 파일을 엽니 다.
  2. alt-command-i를 눌러 검사자를 엽니 다.
  3. <svg>태그를 마우스 오른쪽 버튼으로 클릭하고 "캡처 스크린 샷"을 선택하십시오. 이미지를 확대해서는 안됩니다.

PS .svg 이미지가 너무 작은 경우 확대하려면 텍스트 편집기에서 .svg 파일을 열어 0메타 속성을 제외한 모든 숫자를 추가하십시오 . 예를 들어 역 참조를위한 자리 표시자가 있는 에서 (\d+)로의 전역 정규식 대체를 통해이를 수행 할 수 있습니다 .$10$1


아마도 이것이 太極 者 無極 而 生의 답변 과 거의 동일하다는 것을 언급해야 할 것입니다  .
스콧

-1

wkhtmltoimage (프로젝트 wkhtmltopdf의)는 이것을 잘 변환했습니다.

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick 내 Mac에서 CJK 문자를 공백으로 렌더링합니다.


이 링크가 질문에 대한 답변을 제공 할 수 있지만 여기에 답변의 필수 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않을 수 있습니다. - 리뷰에서
Blackwood

@Blackwood 괜찮아요, 업데이트되었습니다.
georgexsh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.