주어진 해상도에서 SVG 이미지를 PNG로“굽습니다”?


20

Linux를 사용하고 있으며 SVG 파일을 가져 와서 주어진 해상도 (스케일링)로 PNG 파일로 굽고 싶습니다. 명령 행에서이를 빠르고 효과적으로 수행 할 수있는 방법이 있습니까?

나는 이와 같은 것을 찾고있다 :

svg2png --width 128 --height 128 input.svg output.png

이를위한 도구가 있습니까?


답변:


20

사용 ImageMagick과의 변환을 :

convert -resize 128x128 input.svg output.png

입력 캔버스 크기가 지정된 크기보다 작 으면 다시 샘플링하지 않고 출력을 업 스케일합니다. 더 높은 품질의 결과를 얻으려면 -density매개 변수를 추가하십시오 .

convert -density 500 -resize 128x128 input.svg output.png

ImageMagick은 벡터 이미지를 기본 해상도 인 72dpi로 캔버스 해상도로 래스터합니다.
적절한 샘플링으로 업 스케일하려면 위 샘플에서 500dpi와 같은 높은 값을 지정할 수 있습니다.

너무 큰 래스터 밀도를 사용하면 대형 캔버스에서 성능 문제가 될 수 있습니다. 가장 낮고 이상적인 래스터 밀도는 다음과 같습니다. raster_density = raster_size / original_size * original_density

이 이상적인 래스터 밀도는 이미지를 원하는 크기로 직접 출력합니다 ( -resize필요 하지 않음). 그러나 부동 소수점 근사가 발생할 수 있으므로 픽셀 완벽한 결과를 얻으려면 약간 더 높은 값과 크기 조정이 권장됩니다.

ImageMagick의 퍼센트 이스케이프를 사용하여 원래 크기와 밀도를 얻을 수 있습니다 .

 convert input.svg -format "%w %h %[resolution.x] %[resolution.y]" info:

ImageMagick은 SVG의 전체 사양을 처리하지 않습니다. 도형이 잘못 렌더링되는 데 문제가있는 경우 ImageMagick SVG 렌더러 선택 에 대한이 스레드를 확인하십시오 .


정말 고마워 rsvg아래 답변에서 스스로 찾았 지만 ImageMagick을 사용하기 시작했습니다.
Naftuli Kay

1
내 svg 이미지에서 작동하지 않았습니다. 처음에 convert: unable to read font (null) '@ error / annotate.c / RenderFreetype / 1153.` 오류가 발생 brew install gs했지만에 의해 해결 되었지만 변환이 깨끗하게 실행 된 경우에도 결과 이미지는 가비지입니다.
Lloyd Dewolf

@LloydDewolf, 먼저 svg를 청소 해 볼 수 있습니다 .
Mihai Rotaru

추가해야했습니다 -background transparent. 그렇지 않으면 변환은 흰색 배경을 사용합니다.
hgoebl

IM에 -verbose를 설정하면 IM 자체가 inkscape를 사용하여 중간 eps 파일을 생성하는 것처럼 보입니다 (리눅스에 적용되며 창에 적용될 수 있음). 그러므로 내가 직접 잉크 스케이프를 사용하는 것이 좋습니다 것 : inkscape in.svg --export-png=out.png(에서 예를 superuser.com/a/493028/316154 )
북부 - 브래들리

9

모두 rsvginkscape캔 :

$ rsvg
Usage: rsvg [OPTIONS...] file.svg file.png
  -d, --dpi-x=<float>          pixels per inch
  -p, --dpi-y=<float>          pixels per inch
  -x, --x-zoom=<float>         x zoom factor
  -y, --y-zoom=<float>         y zoom factor
  -w, --width=<int>            width
  -h, --height=<int>           height
  -q, --quality=<int>          JPEG quality
  -f, --format=[png, jpeg]     save format
  -v, --version                show version information

Help options:
  -?, --help                   Show this help message
  --usage                      Display brief usage message

과:

$ inkscape --help
Usage: inkscape [OPTIONS...] [FILE...]

Available options:
  -V, --version                             Print the Inkscape version number
  -z, --without-gui                         Do not use X server (only process
                                            files from console)
  -g, --with-gui                            Try to use X server (even if
                                            $DISPLAY is not set)
  -f, --file=FILENAME                       Open specified document(s) (option
                                            string may be excluded)
  -p, --print=FILENAME                      Print document(s) to specified
                                            output file (use '| program' for
                                            pipe)
  -e, --export-png=FILENAME                 Export document to a PNG file
  -d, --export-dpi=DPI                      The resolution used for exporting
                                            SVG into bitmap (default 90)
  -a, --export-area=x0:y0:x1:y1             Exported area in SVG user units
                                            (default is the canvas; 0,0 is
                                            lower-left corner)
  -D, --export-area-drawing                 Exported area is the entire
                                            drawing (not canvas)
  -C, --export-area-canvas                  Exported area is the entire canvas
      --export-area-snap                    Snap the bitmap export area
                                            outwards to the nearest integer
                                            values (in SVG user units)
  -w, --export-width=WIDTH                  The width of exported bitmap in
                                            pixels (overrides export-dpi)
  -h, --export-height=HEIGHT                The height of exported bitmap in
                                            pixels (overrides export-dpi)
  -i, --export-id=ID                        The ID of the object to export
  -j, --export-id-only                      Export just the object with
                                            export-id, hide all others (only
                                            with export-id)
  -t, --export-use-hints                    Use stored filename and DPI hints
                                            when exporting (only with
                                            export-id)
  -b, --export-background=COLOR             Background color of exported
                                            bitmap (any SVG-supported color
                                            string)
  -y, --export-background-opacity=VALUE     Background opacity of exported
                                            bitmap (either 0.0 to 1.0, or 1 to
                                            255)
  -l, --export-plain-svg=FILENAME           Export document to plain SVG file
                                            (no sodipodi or inkscape
                                            namespaces)
  -P, --export-ps=FILENAME                  Export document to a PS file
  -E, --export-eps=FILENAME                 Export document to an EPS file
  -A, --export-pdf=FILENAME                 Export document to a PDF file
  -T, --export-text-to-path                 Convert text object to paths on
                                            export (EPS)
  -F, --export-embed-fonts                  Embed fonts on export (Type 1
                                            only) (EPS)
  -B, --export-bbox-page                    Export files with the bounding box
                                            set to the page size (EPS)
  -X, --query-x                             Query the X coordinate of the
                                            drawing or, if specified, of the
                                            object with --query-id
  -Y, --query-y                             Query the Y coordinate of the
                                            drawing or, if specified, of the
                                            object with --query-id
  -W, --query-width                         Query the width of the drawing or,
                                            if specified, of the object with
                                            --query-id
  -H, --query-height                        Query the height of the drawing
                                            or, if specified, of the object
                                            with --query-id
  -S, --query-all                           List id,x,y,w,h for all objects
  -I, --query-id=ID                         The ID of the object whose
                                            dimensions are queried
  -x, --extension-directory                 Print out the extension directory
                                            and exit
      --vacuum-defs                         Remove unused definitions from the
                                            defs section(s) of the document
      --verb-list                           List the IDs of all the verbs in
                                            Inkscape
      --verb=VERB-ID                        Verb to call when Inkscape opens.
      --select=OBJECT-ID                    Object ID to select when Inkscape
                                            opens.

Help options:
  -?, --help                                Show this help message
      --usage                               Display brief usage message

Imagemagick에 끝없는 문제가있었습니다. rsvg를 직접 사용할 수 있다는 것을 몰랐습니다 (Mac Homebrew에서는 이진을 rsvg-convert라고했습니다). 감사.
tremby

inkscape를 사용하면 imagemagick에서 발생했던 문제를 피할 수있었습니다 .imagemagick을 사용하는 SVG-> PNG 변환은 이미지의 보이지 않는 경계 상자를 잘라 냈지만 (중심 및 상대 치수를 유지하는 데 사용) 잉크 스케이프는 제대로 작동했습니다. 많은 감사합니다!
cutculus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.