gpt4 book ai didi

svg - inkscape 转换 svg -> png : pagesize?

转载 作者:行者123 更新时间:2023-12-02 05:30:54 24 4
gpt4 key购买 nike

我需要在命令行将 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)。

如何在没有定义页面高度的魔数(Magic Number) 1052 的情况下使用 inkscape 进行导出?

最佳答案

一种可能有用的方法是绘制一个您想要作为容器的区域,给它一个 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 是否有一些特定的东西,但我总是发现它非常符合网络。过去我直接在网页中使用它的 svg 文件。

关于svg - inkscape 转换 svg -> png : pagesize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com