特定の解像度でSVG画像をPNGに「焼き付け」ますか?


20

私はLinuxを使用しています。SVGファイルを取得し、特定の解像度(スケーリング)でPNGファイルに焼きたいと思います。コマンドラインからこれを迅速かつ効果的に行う方法はありますか?

私はこのようなものを探しています:

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

このためのツールはありますか?


回答:


20

ImageMagickのconvertを使用します。

convert -resize 128x128 input.svg output.png

入力キャンバスのサイズが指定されたサイズよりも小さい場合、再サンプリングせずに出力が拡大されます。より高品質の結果を得るには、-densityパラメーターを追加します。

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

ImageMagickラスターは、画像をキャンバスの解像度に合わせてデフォルトの密度である72 dpiにします。
適切なサンプリングでアップスケールするには、上記のサンプルで500 dpiのような高い値を指定できます。

大きすぎるキャンバスでは、ラスター密度が高すぎるとパフォーマンスの問題になる可能性があります。最低で理想的なラスター密度は次のとおりです。 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の使用を開始します。
ナフトゥリケイ

1
私のsvg画像では動作しませんでした。最初にconvert: unable to read font (null) '@ error / annotate.c / RenderFreetype / 1153.`エラーを受け取りましたが、これはによって解決されましたbrew install gsが、変換が正常に実行された場合でも、結果のイメージはゴミです。
ロイドデウルフ

@LloydDewolf、最初にsvgのクリーニングを試すことができます。
ミハイロタル

を追加する必要がありました-background transparent。それ以外の場合、変換は白い背景を使用します。
hgoebl

(これはLinuxに適用され、Windowsにも適用されます)IMで-verboseを有効にすると、IM自体がinkscapeを使用して中間epsファイルを作成するように見えます。したがって、inkscapeを直接使用することをお勧めしますinkscape in.svg --export-png=out.pngsuperuser.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と呼ばれていました)。ありがとう。
トレビー

inkscapeを使用すると、imagemagickで発生していた問題が回避されました-imagemagickを使用したSVG-> PNG変換は、画像の不可視の境界ボックスを切り取りました(センタリングと相対寸法を保持するために使用)が、inkscapeは問題なく動作しました。どうもありがとう!
cutculus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.