我正在 *nix 类系统(OS X 10.6.8、各种风格的 Linux)上从 Gearman PHP 进程运行 inkscape
,将 SVG 图像转换为 PNG 或 PDF。我使用这样的东西(为了清楚起见,在此处添加换行符):
/full/path/to/inkscape -z \
--export-png=/path/to/output.png \
--export-width=100 --export-height=100 \
/path/to/input.svg
它可以工作,但是尽管有 -z 标志(“不要使用 X 服务器”),我在控制台输出中得到了这个(在 OS X 上):
Setting Language: .UTF-8
(process:44699): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Xlib: extension "RANDR" missing on display "/tmp/launch-WvcqRh/org.x:0".
这对我来说表明 inkscape 加载的库比它需要的多,并且如果它不尝试连接到 X 服务器,它可能会更快。但是,除了使用 -z/--without-gui
标志之外,我不知道该尝试什么。我的开发机器上的性能仍然是亚秒级(至少对于简单的 SVG 文件而言),但如果可以的话,我想清理它。即使最好的答案只是“抑制错误输出”!
也许我关闭或重置 bash DISPLAY 环境变量?我对X一点也不熟悉。
最佳答案
是的,如果您想让程序根本找不到 X,您可以在启动进程之前取消设置 DISPLAY
。
您还可以使用 Xvfb 来“伪造”X 服务器:http://en.wikipedia.org/wiki/Xvfb
您可能还想看看这些工具:
他们的源代码非常很小。
关于process - 在没有 X 服务器的情况下运行 inkscape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963862/