假设“▣”的字符在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的建议,我尝试了以下方法:
root@host:~@convert -font somefont.ttf -size 50x65 label:▣ output.png
root@host:~@convert -font somefont.ttf -size 50x65 label:'▣' output.png
两者都输出问号但不是正确的字符。
答案 0 :(得分:1)
根据this link,您需要传递以UTF8编码的文本。 它将能够在ASCII范围之外绘制正确的字符。
答案 1 :(得分:0)
$ 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 ;(
使用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'])