Как передать аргумент символа юникода в ImageMagick? - PullRequest
0 голосов
/ 29 ноября 2009

Предположим, что символ "▣" находится в таблице глифов 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, для исправления и выравнивания текста с определенным размером изображения.

EDIT:

По предложению Юку я попробовал следующие методы:

root@host:~@convert -font somefont.ttf -size 50x65 label:▣ output.png
root@host:~@convert -font somefont.ttf -size 50x65 label:'▣' output.png

Оба выводят знак вопроса, но не правильный символ.

Ответы [ 2 ]

1 голос
/ 29 ноября 2009

Согласно этой ссылке , вам необходимо передать текст, закодированный в UTF8. Он сможет нарисовать правильный символ вне диапазона ASCII.

0 голосов
/ 29 ноября 2009
  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'])
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...