5

*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何を試すべきかわかりません。私の開発マシンのパフォーマンスはまだ1秒未満です(少なくとも些細なSVGファイルの場合)が、可能であればこれをクリーンアップしたいと思います。たとえベストアンサーが「エラー出力の抑制」であっても!

たぶん、bash DISPLAY env varをオフにするかリセットした場合はどうなりますか?私はXにまったく精通していません。

4

3 に答える 3

7

はい、プログラムが X をまったく検出しないようにしたい場合はunset DISPLAY、プロセスを起動する前に行うことができます。

Xvfb を使用して X サーバーを「偽装」することもできます: http://en.wikipedia.org/wiki/Xvfb

次のツールも参照してください。

それらのソース コードは非常に小さいです。

于 2012-04-03T14:11:02.760 に答える
1

真のエラーに応答する機能を維持しながら、出力を抑制するもう 1 つの方法は、Python から Inkscape を呼び出すことです。

import subprocess               # May want to use subprocess32 instead

cmd_list = [ '/full/path/to/inkscape', '-z', 
             '--export-png', '/path/to/output.png',
             '--export-width', 100,
             '--export-height', 100,
             '/path/to/input.svg' ]

# Invoke the command.  Divert output that normally goes to stdout or stderr.
p = subprocess.Popen( cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE )

# Below, < out > and < err > are strings or < None >, derived from stdout and stderr.
out, err = p.communicate()      # Waits for process to terminate

# Maybe do something with stdout output that is in < out >
# Maybe do something with stderr output that is in < err >

if p.returncode:
    raise Exception( 'Inkscape error: ' + (err or '?')  )

私の Mac OS システムでは、粗雑なステータス メッセージ (元の投稿者によって説明されています) はerr. さらに、私が実行した特定のジョブについては、次のような追加のメッセージがありますout

Background RRGGBBAA: ffffff00
Area 0:0:339:339 exported to 100 x 100 pixels (72.4584 dpi)
Bitmap saved as: /path/to/output.png

(入力 svg ファイルのサイズは 339 x 339 ピクセルです。)

于 2017-10-05T16:12:02.613 に答える
0

(echo foo.ai --export-plain-svg foo.svg) | DISPLAY= inkscape --shell

于 2014-01-15T23:32:49.593 に答える