inkscape转换svg - > png:pagesize?

时间:2012-09-12 18:26:13

标签: svg png inkscape

我需要在命令行将svg转换为png。我尝试使用imagemagick但是当与旋转变换一起使用时似乎有一个错误,例如这个样本s3.svg:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
  <g id="layer1">
    <circle cx="200" cy="200" r="200" stroke="black"
        stroke-width="0.5" fill="none"/>
    <g transform="rotate(48 200 200)">
      <path id="path00" style="fill:#dca08c;stroke:#000000;stroke-width:1"
         d="M 200,0 L 400,200 L 200,400 L 0,200 z"/>
    </g>
  </g>
</svg>

我能够在命令行中使用inkscape:

  c:\app\inkscape\portable\App\Inkscape\inkscape.com -f s3.svg -e s3.png --export-background=white --export-area=0:652:400:1052

但SVG坐标(0,0)在左上角定义,而在inkscape的导出中,导出区域(0,0)在左下角定义。

如何在没有定义页面高度的幻数1052的情况下使用inkscape导出?

4 个答案:

答案 0 :(得分:3)

可能有用的一种方法是将您想要的区域绘制为容器,为其指定ID,然后使用-i id选项导出该区域。如果包装器不可见,请给它包装空白背景/边框。

编辑(添加示例): 我用过这个xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
  <g id="layer1">
    <rect width="400" height="600" id="wrapper" fill="none"></rect>
    <circle cx="200" cy="200" r="200" stroke="black"
        stroke-width="0.5" fill="none"/>
    <g transform="rotate(48 200 200)">
      <path id="path00" style="fill:#dca08c;stroke:#000000;stroke-width:1"
         d="M 200,0 L 400,200 L 200,400 L 0,200 z"/>
    </g>
  </g>
</svg>

使用此命令(我在Mac上,所以根据需要翻译特定的操作系统)我可以控制输出png的大小/位置:

/Applications/Inkscape.app/Contents/Resources/bin/inkscape -f test.svg -e out.png -i wrapper

我不是svg专家所以我不确定inkscape是否有一些特定的东西,但我总是发现它非常符合Web标准。过去我直接在网页中使用了svg文件。

答案 1 :(得分:2)

您尝试导出的似乎是整个绘图。

inkscape可以选择使用--export-area-drawing导出图纸,而不是指定要导出的区域。

c:\app\inkscape\portable\App\Inkscape\inkscape.com -f s3.svg -e s3.png --export-background=white --export-area-drawing

答案 2 :(得分:0)

如果问题是不知道页面高度,那么以下语法可能有帮助吗?

c:\app\inkscape\portable\App\Inkscape\inkscape.com s3.svg -z --query-height

这应该返回文档的像素高度,您可以在导出调用中使用返回的数字。

答案 3 :(得分:0)

Inkscape有画布大小选项,我在导出网页时出现同样的问题 - 您的图像从视口中删除。

更改画布/画板尺寸以满足您要导出的元素的大小