題 用於在Mac OS X上將SVG轉換為PNG的命令行應用程序


是否有任何可以將SVG轉換為PNG的命令行程序在Mac OS X上運行?

編輯:Dylan B對ImageMagick有一個很好的答案。作為參考,要使用MacPorts在Mac OS X上安裝帶有SVG支持的ImageMagick,請執行此操作

port install imagemagick +rsvg

139
2018-04-26 01:53


起源


我找到了一種方法,如果你有谷歌Chrome ...而且不需要安裝任何其他東西: superuser.com/questions/134679/... - 太極者無極而生


答案:


或者不安裝任何東西:

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

它將產生1000像素寬的picture.svg.png。

我只在OS X 10.6.3上測試過它。


192
2018-05-17 13:32



不幸的是,這會將圖像剪輯為正方形 - Martijn Pieters
啊, qlmanage -t 給出快速查看使用的縮略圖(在Finder中等)。聰明的主意。不幸的是,這些縮略圖可能有問題,特別是涉及到文本時。 - ShreevatsaR
這會在第一象限中生成帶有svg文件的圖像。不自動裁剪。試圖從名詞項目轉換文件 - 希望這工作。 - Alex Cook
該解決方案未考慮透明度。工具 rsvg-convert 在@ ahti的答案之前為我解決了。 - BenR
將寬度和高度參數放在後面 -s 選項對我不起作用。仍然將它播種到一個正方形。很沮喪! - Erik van der Neut


我發現對我來說最好的工具是 rsvg-convert

它可以在brew中找到 brew install librsvg 並像這樣使用:

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

(此示例創建一個32px高的png。寬度自動確定。


80
2018-02-28 20:47



這是唯一一個適合我的小牛隊和 commons.wikimedia.org/wiki/... - Aron Ahmadia
實際上這個工作,而ImageMagick的工作 convert 發布錯誤並且無法轉換複雜的SVG - Brice
這是迄今為止我發現的OS X Yosemite +1的最佳解決方案! - Greg Martin
奇怪的是,我的一些SVG失敗了。該 qlmanage 答案適用於所有人,但放了一個白色背景,我不想要。 - sudo
同 rsvg-convert,得到的.png具有正確的尺寸,但圖像全部是黑色而不是原始顏色。同 qlmanage 圖像被裁剪為正方形。仍在尋找解決方案:-( - Erik van der Neut


ImageMagick的 是一個 非常 多功能命令行圖像編輯器,如果它有一個GUI,它可能會與Photoshop相媲美。但無論如何誰還需要這些。 :P

安裝後,類似下面的內容會將.svg轉換為.png:

$ convert picture.svg picture.png

原始.svg不會被刪除。


36
2018-04-26 02:00



它 有點 有一個GUI,在 display。 - Ignacio Vazquez-Abrams
當我用Fink安裝ImageMagick時,我無法將svg轉換為png - 有一些錯誤。原來我還需要安裝librsvg2-bin。 - tst
如果未安裝librsvg2-bin(如在OS X上),則會失敗。找不到在OS X上安裝它的方法。 - John Sheehan
如果您想要調整SVG的大小,因為它會生成模糊的圖像,這將無法正常工作。 - Behrang
它也不能正確轉換所有SVG文件;至少qlmanage獲得了圖像的所有部分。 - Johan


Inkscape中 使用它的Commandline-Interface為我產生最好的結果:

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

好的是,您可以指定生成圖像的確切像素大小,而不必弄亂密度。


27
2018-01-05 13:04



這對我有用! - 我用Inkscape創建了一個更大的SVG - matheszabi
這是正確渲染我手寫svg的唯一方法 - Griffin
轉換不會從SVG生成良好的PNG文件。使用Inkscape是迄今為止我發現的最好方法。 - ol_v_er
這對我有用,但會創建非常模糊的文件。 - Marcin
我有一個問題,找到文件,所以運行它 inkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png - Andrei


好的,如果您使用谷歌瀏覽器,我在Mac上找到了一種簡單的方法。

在一句話中,它是看到的 svg 網頁中的圖片(必須在 html 文件),右鍵單擊圖像並選擇“複製圖像”並粘貼到預覽應用程序。

腳步:

  1. 下載或擁有 svg 例如,你的硬盤中的文件 somefile.svg
  2. 現在,在同一個文件夾中,只需製作一個html文件 tmp.html 包含這一行: <img src="somefile.svg">
  3. 現在,在Google 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">

並且你將在屏幕上有一個足夠好的圖像來製作屏幕截圖 - 使用 CMD轉移4 要么 CMD轉移3 例如,在Mac上。確保將Chrome窗口的大小調整為屏幕上允許的最大值。


12
2018-02-07 19:02



智能解決方案 - Manu
這實際上為我產生了最好的結果,因為它呈現與瀏覽器完全相同。 - Jason Haslam
結果圖像對我來說分辨率很差 - Michael
巧妙的:)但對於非常大的SVG,結果圖像的分辨率太低,正如@Michael所提到的那樣。 - waldyrious


如果你想一次做很多,你可以:

mogrify -format png *.svg

還可以選擇動態調整大小等等。


5
2018-04-10 14:12



mogrify 也是ImageMagick的標準桿。 - ShreevatsaR
效果很好,但速度很慢。 - Meekohi
-1?有人認為這沒用嗎?什麼是錯誤? - DefenestrationDay
我不是那個被投票的人,但值得注意的是ImageMagick在調整大小之前愚蠢地將svg轉換為任意大小的光柵圖像,導致輸出模糊。 - Dae


嘗試 Apache Batik

java -jar batik-rasterizer.jar FILES

它還支持批量轉換,還有許多其他有用的選項。


3
2018-05-23 03:05





我做了 svgexport 使用node / npm,它是跨平台的,可以像下面這樣簡單:

svgexport input.svg output.png

3
2017-09-27 08:47



到目前為止,這是最容易使用和記憶的。此外,唯一一個在我的情況下產生正確結果的人。 - Marko Grešak
結果對我來說不是很好。 - Michael


你也可以使用 phantomjs 渲染svg。它的優點是它像瀏覽器一樣呈現它,因為它基本上是一個無頭的WebKit。

下載後,您需要 phantomjs (二進制)和 rasterizer.js examples文件夾中的文件。

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

2
2018-03-19 16:18



作為參考,可以安裝 brew cask install phantomjs。在我的安裝中,示例文件夾位於路徑中 /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/。 - waldyrious