Imagemagick使用Pango从字符串创建PNG:无法转义特殊符号

时间:2015-08-18 22:01:54

标签: python imagemagick pango

我使用convert和pango从字符串创建一个png文件,其中字符串是C语言代码。

我的转换在许多文件上都失败了,但并非全部。很难找到失败的确切原因,但似乎字符串包含由pango解释的字符。

有没有办法逃脱所有可能导致Pango错误的令牌?

我通过Python子进程调用这样的转换:

cmd = """convert pango:'<span foreground="black" background="white">"%s"</span>' outfile.png""" % C_string

TIA!

1 个答案:

答案 0 :(得分:1)

subprocess.PIPEsubprocess.Popen.communicate一起使用,而不是浪费时间尝试混合python,shell和pango转义序列。 Pango应该通过glib或cgi来逃避。

import glib
from subprocess import Popen, PIPE

cmd = 'convert pango:- outfile.png'

pid = Popen(cmd,
            stdin=PIPE,
            stdout=PIPE,
            stderr=PIPE,
            shell=True)
text_node = glib.markup_escape_text(C_string) # or cgi.escape(C_string)
pango = '<span foreground="black" background="white">{0}</span>'.format(text_node)
stdout, stderr = pid.communicate(pango)