是否有在Mac OS X上运行的可以将SVG转换为PNG的命令行程序?
编辑:Dylan B在ImageMagick上有很好的答案。作为参考,要使用MacPorts在Mac OS X上安装具有SVG支持的ImageMagick,请执行
port install imagemagick +rsvg
pip3 install cairosvg
是否有在Mac OS X上运行的可以将SVG转换为PNG的命令行程序?
编辑:Dylan B在ImageMagick上有很好的答案。作为参考,要使用MacPorts在Mac OS X上安装具有SVG支持的ImageMagick,请执行
port install imagemagick +rsvg
pip3 install cairosvg
Answers:
或不安装任何东西:
qlmanage -t -s 1000 -o . picture.svg
它将产生picture.svg.png,其宽度为1000像素。
我仅在OS X 10.6.3上进行了测试。
qlmanage -t
给出快速查找(在Finder等中)使用的缩略图。聪明的主意。不幸的是,这些缩略图可能有问题,特别是涉及文本时。
rsvg-convert
@ahti的答案中的工具对我来说是可行的。
-s
选项之后放置width和height参数对我来说不起作用。仍将其裁剪为正方形。很沮丧!
我发现对我来说,最好的工具是rsvg-convert
。
可以在brew with中找到它brew install librsvg
,其用法如下:
rsvg-convert -h 32 icon.svg > icon-32.png
(此示例创建了32px高png。宽度是自动确定的。
convert
发布了错误并且无法掩盖复杂的SVG
qlmanage
回答工作了所有的人,但把一个白色的背景,这是我不想要的。
rsvg-convert
,生成的.png具有正确的尺寸,但是图像显示为全黑而不是原始颜色。随着qlmanage
图像被裁剪成正方形。仍在寻找解决方案:-(
ImageMagick是一种功能非常强大的命令行图像编辑器,如果它具有GUI,它可能会与Photoshop媲美。但是谁仍然需要那些。:P
安装后,类似下面的内容会将.svg转换为.png:
$ convert picture.svg picture.png
原始.svg不会被删除。
display
。
Inkscape的Command-Interface可以为我带来最佳效果:
/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg
好消息是,您可以指定所生成图像的确切像素大小,而不必担心密度。
inkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
好的,如果您使用的是Google Chrome浏览器,我在Mac上找到了一种简单的方法。
一句话,就是要查看svg
网页中的图像(必须在html
文件中),右键单击图像并选择“复制图像”,然后粘贴到“预览”应用程序中。
脚步:
svg
文件或将文件保存在硬盘中,例如,somefile.svg
tmp.html
包含以下行的html文件:<img src="somefile.svg">
"File -> New from Clipboard"
File -> Save
文件已存在png
。(或其他文件类型)。这已在Mac OS X El Capitan的当前Chrome(版本48.0)上进行了测试。
更新:我不确定这是否是由于Google Chrome施加的某些限制。我只是使用Chrome 58.0尝试了SVG文件,但从上述方法中得到的图像很小。如果您也看到这种情况,也可以使用
<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">
然后您将在屏幕上获得足够好的图像来进行屏幕截图(例如使用Mac CmdShift4或CmdShift3在Mac上)。确保将Chrome窗口的大小调整为屏幕上允许的最大大小。
如果您想一次执行许多操作,则可以:
mogrify -format png *.svg
还有一些选项可以即时调整大小。
mogrify
也是ImageMagick的标准杆。
您也可以使用phantomjs渲染svg。优点是,由于它基本上是无头WebKit,因此可以像浏览器一样呈现它。
下载完成后,您需要example文件夹中的phantomjs(二进制)和rasterizer.js文件。
phantomjs examples/rasterize.js Tiger.svg out.png
brew cask install phantomjs
。在我的安装中,examples文件夹位于path中/usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/
。
ImageMagick的convert命令(使用其他一些参数)对我来说是什么。这是我的批处理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
如前所述,ImageMagick可以解决问题。我只想为GraphicsMagick添加一点,这是ImageMagick的旧分支,具有一些改进(通过fink安装时,依赖膨胀大大减少了)。
您可以将SVG文件的整个文件夹批量转换为PNG。我使用Inkscape命令行界面生成宽度为80px的png文件。
find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;
png将以原始名称* .png保存
无需安装任何内容的另一种方法。虽然不在命令行中。
<svg>
标签,选择“捕获屏幕截图”。(请注意,您不得放大图像。)PS要放大.svg图像(如果它太小),请尝试在文本编辑器中打开.svg文件,然后将其附加0
到每个数字(元属性中除外)。这可以通过从(\d+)
到的全局正则表达式替换来完成,例如$10
,其中$1
是用于反向引用的占位符。