首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一行中运行多个inkscape命令

在一行中运行多个inkscape命令
EN

Stack Overflow用户
提问于 2011-07-29 17:02:58
回答 3查看 1.2K关注 0票数 2

是否可以在一个exec命令中运行多个命令?我需要从SVG文件中抓取一些图像,这个变体太慢了:

代码语言:javascript
运行
复制
exec('inkscape file.svg --export-id=g123 --export-png=img1.png');
exec('inkscape file.svg --export-id=g124 --export-png=img2.png');
exec('inkscape file.svg --export-id=g125 --export-png=img3.png');

所以我需要在一行中做所有的事情。我已经试过了:

代码语言:javascript
运行
复制
exec('inkscape file.svg --export-id=g125 --export-png=img3.png inkscape file.svg --export-id=g123 --export-png=img1.png');

但这只提取了最后一张图像。

EN

回答 3

Stack Overflow用户

发布于 2011-07-29 17:09:02

exec()本身并不慢。但对于每个调用,您首先启动Inkscape,执行操作,然后再次关闭它。这就是为什么要花这么长时间。

不幸的是,Inkscape没有批处理模式。但是您可以使用Gimp,它可以批量执行相同的操作。

票数 2
EN

Stack Overflow用户

发布于 2011-10-29 21:19:40

您可以在shell模式下运行Inkscape,并通过向其标准输入写入命令来与其通信。如果你不想在PHP中实现它,你可以编写一个简单的shell包装器来实现它,例如:

代码语言:javascript
运行
复制
#!/bin/bash
SVG="$1"
shift
(
while [ "$1" != "" ] ; do
  echo "\"--file=$SVG\" \"--export-id=$1\" \"--export-png=$2\""
  shift 2
done
echo "quit"
) | \
  /path/to/inkscape --shell 2>/dev/null

然后像这样使用它

代码语言:javascript
运行
复制
exec("/path/to/wrapper file.svg g123 img1.png g124 img2.png g125 img3.png");
票数 2
EN

Stack Overflow用户

发布于 2011-07-29 17:05:53

exec()可能并不慢。服务器/inkscape速度很慢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6870892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档