用于在 Mac OS X 上将 SVG 转换为 PNG 的命令行应用程序

Lor*_*ein 226 png svg command-line macos

是否有任何命令行程序可以将 SVG 转换为在 macOS 上运行的 PNG?

tst*_*tst 295

或者不安装任何东西:

qlmanage -t -s 1000 -o . picture.svg 
Run Code Online (Sandbox Code Playgroud)

它将生成 1000 像素宽的 picture.svg.png。

我仅在 OS X 10.6.3 上对其进行了测试。

  • 不幸的是,这会将图像剪辑成一个正方形。 (49认同)
  • 该解决方案没有考虑透明度。@ahti 的回答中的工具 `rsvg-convert` 以前对我有用过。 (12认同)
  • 啊,`qlmanage -t` 给出了 Quick Look(在 Finder 等中)使用的缩略图。聪明的想法。不幸的是,这些缩略图可能有问题,尤其是当涉及文本时。 (8认同)
  • 这会在第一象限中生成带有 svg 文件的图像。不自动裁剪。尝试从名词项目转换文件 - 希望这有效。 (7认同)
  • 在 `-s` 选项后放置宽度和高度参数对我不起作用。仍然将其裁剪为正方形。非常令人沮丧! (6认同)
  • -s 选项采用“-s 1920x1080”形式的尺寸,因此您可以指定所需的精确尺寸。如果您指定完整尺寸,图像似乎不会被剪裁。 (2认同)
  • 透明度似乎不起作用 (2认同)

小智 159

我发现对我来说,最好的工作工具是rsvg-convert.

它可以在 brew with 中找到,brew install librsvg并像这样使用:

rsvg-convert -h 32 icon.svg > icon-32.png
Run Code Online (Sandbox Code Playgroud)

(这个例子创建了一个 32px 高的 png。宽度是自动确定的。

  • 这是迄今为止我为 OS X Yosemite +1 找到的最佳解决方案! (11认同)
  • 这是唯一对我在 Mavericks 和 https://commons.wikimedia.org/wiki/File:Windows_logo_-_2012_derivative.svg 有效的方法 (2认同)
  • 使用 `rsvg-convert`,生成的 .png 具有正确的尺寸,但图像全黑而不是原始颜色。使用 `qlmanage` 将图像裁剪为正方形。仍在寻找解决方案:-( (2认同)
  • 像这样的批量转换 `find 。-type f -name "*.svg" -exec bash -c 'rsvg-convert -h 800 "$0" > "$0".png' {} \;` (2认同)

小智 56

ImageMagick是一个非常通用的命令行图像编辑器,如果它有一个 GUI,它可能会与 Photoshop 相媲美。但无论如何谁需要那些。:P

安装后,类似以下内容会将 .svg 转换为 .png:

$ convert picture.svg picture.png
Run Code Online (Sandbox Code Playgroud)

原始 .svg 不会被删除。

  • 如果您想调整 SVG 的大小,因为它会生成模糊的图像,这将无法正常工作。 (3认同)
  • 它也不会正确转换所有 SVG 文件;至少 qlmanage 获得了图像的所有部分。 (3认同)
  • 当我使用 Fink 安装 ImageMagick 时,我无法将 svg 转换为 png - 出现一些错误。原来我还需要安装 librsvg2-bin 。 (2认同)

小智 32

带有命令行界面的Inkscape对我来说效果最好:

安装 Inkscape:

brew install inkscape
Run Code Online (Sandbox Code Playgroud)

将 test.svg 转换为宽度为 1024 的 output.png(保持纵横比):

/Applications/Inkscape.app/Contents/MacOS/inkscape --export-type png --export-filename output.png -w 1024 test.svg
Run Code Online (Sandbox Code Playgroud)

旧答案(不再适用于最新的inkscape):

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg*
Run Code Online (Sandbox Code Playgroud)

  • 我在查找文件时遇到问题,因此将其作为 `inkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png` 运行 (3认同)
  • `inkscape --export-type="png" $(ls -q)` 像魔术一样工作,将我目录中的所有 SVG 文件导出为 PNG 文件,质量很好! (2认同)

non*_*ity 31

好的,如果您有谷歌浏览器,我找到了一种在 Mac 上执行此操作的简单方法。

(即使要将webpChrome 中的文件转换为png或 ,这也有效jpg

一句话,就是svg在网页中看到图片(必须在html文件中),右键点击图片,选择“复制图片”,粘贴到预览应用。

脚步:

  1. 下载或将svg文件保存在您的硬盘驱动器中,例如,somefile.svg
  2. 现在,在同一个文件夹中,创建一个tmp.html包含这一行的 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 58.0 尝试了一个 SVG 文件,我从上面的方法中得到了一个小图像。如果你也看到这个案例,你也可以使用

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">
Run Code Online (Sandbox Code Playgroud)

或者如果您想要更多保证金,请使用:

<img src="somefile.svg" style="height: 64vh; margin-top: 18vh; margin-left: 18vh">
Run Code Online (Sandbox Code Playgroud)

并且您将在屏幕上有一个足以进行屏幕截图的图像——例如,在 Mac 上使用CmdShift4CmdShift3。确保首先将 Chrome 窗口的大小调整到屏幕上允许的最大值。

  • 这实际上为我产生了最好的结果,因为它呈现与浏览器完全相同的效果。 (3认同)
  • 智能解决方案! (2认同)

Ali*_*iba 10

为此,我使用 node/npm制作了svgexport,它是跨平台的,并且可以很简单:

svgexport input.svg output.png
Run Code Online (Sandbox Code Playgroud)


Def*_*Day 6

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

mogrify -format png *.svg

还有一些选项可以即时调整大小等。

  • `mogrify` 也是 ImageMagick 的标准。 (3认同)
  • 我不是投反对票的人,但值得注意的是 ImageMagick 在调整大小之前愚蠢地将 svg 转换为任意大小的光栅图像,从而导致输出模糊。 (3认同)

小智 6

另一种无需安装任何东西的方法。但不在命令行中。

  1. 在 Safari 中打开 .svg 文件。
  2. 按 alt-command-i 打开检查器。
  3. 右键单击标签<svg>,选择“捕获屏幕截图”。(请注意,您不得放大图像。)

PS 如果 .svg 图像太小,则要放大它,请尝试在文本编辑器中打开 .svg 文件并附加到除0元属性之外的每个数字。例如,这可以通过从(\d+)to进行全局正则表达式替换来完成$10,其中是向后引用的占位符。$1


Ala*_*ong 5

这是我用的:

brew install imagemagick --with-librsvg

然后运行以下命令:

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

希望能帮助到你。

  • Homebrew 已删除提供选项的功能,因此 `--with-librsvg` 不再有效,请参阅此处 https://github.com/Homebrew/homebrew-core/pull/36079 (2认同)