- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Inkscape 有一个这样调用的 shell 模式
inkscape --shell
你可以在哪里执行这样的命令:
some_svg_file.svg -e some_png_output.png -y 1.0 -b #ffffff -D -d 150
这将生成一个 PNG 文件,或者像这样:
/home/simone/some_text.svg -S
它在返回消息中为您提供文件中所有元素的边界框,如下所示
svg2,0.72,-12.834,122.67281,12.942
layer1,0.72,-12.834,122.67281,12.942
text2985,0.72,-12.834,122.67281,12.942
tspan2987,0.72,-12.834,122.67281,12.942
这样做的好处是您可以对 SVG 文件执行操作,而无需每次都重新启动 Inkscape。
我想做这样的事情:
sub do_inkscape {
my ($file, $commands) = @_;
# capture output
return $output
}
如果我像这样使用 open2 和 fork ,一切正常:
use IPC::Open2;
$pid = open2(\*CHLD_OUT, \*CHLD_IN, 'inkscape --shell');
$\ = "\n"; $/ = ">";
my $out; open my $fh, '>', \$out;
if (!defined($kidpid = fork())) {
die "cannot fork: $!";
} elsif ($kidpid == 0) {
while (<>) { print CHLD_IN $_; }
} else {
while (<CHLD_OUT>) { chop; s/\s*$//gmi; print "\"$_\""; }
waitpid($kidpid, 0);
}
但我找不到如何只输入一行,并只捕获该输出而不必每次都重新启动 Inkscape 的方法。
谢谢
西蒙
最佳答案
您不需要 fork ,open2
会自行处理。您需要做的是找到一种检测 inkscape
何时等待输入的方法。
这是一个非常基本的示例,说明如何实现这一点:
#! /usr/bin/perl
use strict;
use warnings;
use IPC::Open2;
sub read_until_prompt($) {
my ($fh) = (@_);
my $done = 0;
while (!$done) {
my $in;
read($fh, $in, 1);
if ($in eq '>') {
$done = 1;
} else {
print $in;
}
}
}
my ($is_in, $is_out);
my $pid = open2($is_out, $is_in, 'inkscape --shell');
read_until_prompt($is_out);
print "ready\n";
print $is_in "test.svg -S\n";
read_until_prompt($is_out);
print $is_in "quit\n";
waitpid $pid, 0;
print "done!\n";
read_until_prompt
从 inkscape
的输出中读取,直到它找到一个 >
字符,并假定当它看到一个时,inkscape
准备好了。
注意:这太简单了,如果 >
可以出现在您期望的输出中的提示之外,您可能需要更多的逻辑才能使其更可靠地工作。上面的脚本中也根本没有错误检查,这很糟糕。
关于perl - 从 perl 使用 Inkscape shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695641/
我在 Windows 7 上使用 Inkscape 0.91。我在 Inkscape 中遇到了一个奇怪的问题。每当我尝试粘贴从记事本复制的内容时,我都无法粘贴,因为它说“剪贴板中没有任何内容”。请帮忙
希望我在正确的领域问这个问题,我正在为 Inkscape 开发几个扩展,我想知道是否有办法刷新像 GIMP 那样的扩展,用于 script-fu?我在 Inkscape 上搜索了网络和文档,但找不到任
我开始学习使用 Inkscape,我正在经历 this tutorial关于创造一个 Shiny 的表盘。 每个小时位置由一个圆圈表示,所以我想将圆圈的旋转十字标记放置在圆圈的绝对中心,以及将圆圈放在
我需要绘制一些具有不同颜色顶点的无向图。以前,我一直以乏味的方式进行此操作,将每个顶点绘制为圆,将每个边绘制为直线。有没有一种方法可以通过使用贝塞尔曲线函数轻松做到这一点?我尝试过这样做,但不知道如何
如何在 Inkscape 中设置背景区域的外观,以便区分白色背景的图像和透明背景的图像? 正是由于这个原因,许多其他图像查看/编辑程序都有方格背景,但我找不到 Inkscape 的类似内容。 最佳答案
我正在使用 Inkscape 0.91。我使用 Inkscape 创建了一个艺术品并将其转换为 PDF。在打印副本时,我无法获得所使用的确切颜色。如何使其成为CMYK模式? 提前致谢。 最佳答案 不幸
我尝试时遇到一个问题 1>将文本行转换为对象,应用Path > Object to Path(或Shift+Ctrl+c), 2>然后应用'Path>Dynamic offset'(或Ctrl+J)。
Inkscape 提示没有 libxml,所以我为 Windows 10 安装了 lxml。它在修改路径 -> 抖动节点期间再次提示。所以我重新启动了 Inkscape。它仍在提示。有谁知道如何解决这
我正在做一个简单的网站,我在其中放置了一些图形。现在我使用 Inkscape 来制作每个图表。我使用 Inkscape 在形状之间进行 UNION 操作。然后我保存新图表,进行另一个合并,保存,等等。
有没有一种简单的方法可以沿着包含直线路径段的直线移动路径的节点?我的意思是说,我有一个三角形,如下所示。我想沿着包含段“AB”的线移动“A”表示的节点。这可行吗? 最佳答案 按住 Ctrl+Alt 并
我想将上标和下标都添加到 Inkscape 文本对象中的同一个字符。目前,我有这个: 但我希望撇号 (') 和 0 垂直对齐,以便 x 具有 (') 作为上标和 0 作为下标。 最佳答案 您可以在零索
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 社区 6 个月前审核
Inkscape 中是否有命令将路径坐标舍入为最接近的整数值。 例如,要替换此路径: m 0,0 261.98828,-890.8828 -299.999999,-900 2593.486319,54
我正在使用 Inkscape 0.91。我想使用 Filters -> ABC 的 Noise Transparency 效果,但此较高版本的 Inkscape 中不存在该效果。我在网上看到,在更高的
我知道如何在inkscape 中使用对齐/分布。 但他们只工作一次。它不会持续存在。 例子: 一旦我更改了其中一个对象的大小,对齐就会丢失。 有没有办法坚持对齐? 示例:如果我更改圆的大小,它的中心仍
我正在使用inkscape来创建svg。稍后我将使用 vivus.js 在网站中绘制该 svg 路径的动画。 . 问题是我无法控制inkscape中路径的起始节点。为了让自己清楚,假设我想为在inks
在Inkscape中,通过将对象的左上角坐标设置为数字来移动对象非常方便。现在我想到的是,是否有类似的操作适用于贝塞尔曲线控制点?尽管我正在寻找答案,但我知道它取决于软件的功能。提前致谢。 最佳答案
我试图通过在 .bat 文件中写入这些行来运行 inkscape shell 模式: inkscape --shell >2.svg -e 2.png 但它根本不起作用(没有 png 文件),而且我试
每当我在Inkscape中复制和粘贴某些内容时,结果都是像素化图像,而不是原始对象。例如,复制粘贴的矩形不能再编辑为矩形,如果我放大则变得模糊。 我正在使用OSX 10.10.1和X11 2.7.7。
我是一名优秀的程序员,十分优秀!