如何将unicode字符参数传递给ImageMagick?

2024-09-28 18:51:54 发布

您现在位置:Python中文网/ 问答频道 /正文

假设“▣”字符在somefont.ttf字体的字形表。在

char = unichr(9635)

subprocess.call(['convert', '-font', 'somefont.ttf', '-size', '50x50', '-label:%s' % char, 'output.png'])

subprocess.call(['convert', '-font', 'somefont.ttf', '-size', '50x50', ('-label:%s' % char).encode('utf-8'), 'output.png'])

两者都创建一个空白图像,上面没有“▣”字符。以上代码正确吗?或者问题出在ImageMagick一侧,它不能捕获特定范围内的标签?在

使用ImageMagick绘制文本的原因是它比PIL更灵活地将文本固定和对齐到特定的图像大小。在

编辑:

根据yuku的建议,我尝试了以下方法:

^{pr2}$

两者都输出一个问号,但不是正确的字符。在


Tags: 图像文本convertoutputsizepngttfcall
2条回答
  1. 尝试使用控制台中的ASCII标签手动运行它。在
    $ convert -font somefont.ttf -size 50x50 -label:A output.png
    convert: unrecognized option `-label:A' @ convert.c/ConvertImageCommand/1753.
    1 ;( 
    $ convert -font somefont.ttf -size 50x50 -label A output.png
    convert: missing an image filename `output.png' @ convert.c/ConvertImageComm\
    and/2775.
    1 ;( 
  1. 使用subprocess.check_call代替os.system。在

    import subprocess
    
    if __name__=="__main__":
        cmd = 'convert -font somefont.ttf -size 50x50'.split()
        #XXX command arguments are invalid 
        subprocess.check_call(cmd + ['-label', unichr(9635), 'output.png'])
    

根据this link,您需要传递用UTF8编码的文本。 它将能够在ASCII范围之外绘制正确的字符。在

相关问题 更多 >