Pergunta

Como desenhar texto em negrito / itálico com PIL? ImageFont.truetype (arquivo, tamanho) tem uma opção para especificar apenas o tamanho da fonte.

Foi útil?

Solução

Use a versão negrito / itálico da fonte

Outras dicas

Muitas fontes usar diferentes arquivos TTF para suas versões negrito / itálico, então eu imagino que se você apenas especificar que arquivo ele iria trabalhar.

Uma solução bastante hacky para fazer um negrito se (por qualquer motivo) você não tem uma versão em negrito separado da fonte é imprimir o mesmo texto várias vezes com um ligeiro deslocamento.

andaleMono = ImageFont.truetype(ANDALE_MONO_PATH,16)
text = "hello world"
mainOffset = (50,50)
xoff, yoff = mainOffset
draw.text(mainOffset,text,font=andaleMono,fill='black')
draw.text((xoff+1,yoff+1),text,font=andaleMono,fill='black')
draw.text((xoff-1,yoff-1),text,font=andaleMono,fill='black')

Bem, este é o meu primeiro comentário. Aqui vamos nós.

Vou tentar clarificar o procedimento. Na primeira que eu fiz foi usar o "nome" da fonte como esta

font = ImageFont.truetype("C:\Windows\Fonts\\Arial Negrita.ttf",25)

mas só tem alguns erros como este:

    Traceback (most recent call last):
  File "C:/Users/555STi/PycharmProjects/PIL/img.py", line 8, in <module>
    font = ImageFont.truetype("C:\Windows\Fonts\Arial negrita.ttf",25)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 262, in truetype
    return FreeTypeFont(font, size, index, encoding)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 142, in __init__
    self.font = core.getfont(font, size, index, encoding)
IOError: cannot open resource

Então me lembrei de que as fontes às vezes tem outros "nomes" ou "nomes", por isso, o que eu fiz foi ir a fontes da pasta, em seguida, abriu a fonte Arial wich exibido todos os estilos como negrita (negrito], cursiva (itálico) , etc.

Fez um clique direito sobre o estilo "negrita", "Propriedades" selecionados e, em seguida, houve o "nome real" da fonte.

No meu caso, o nome era "ariblk"

Então, finalmente, utilizado apenas o nome como este.

font = ImageFont.truetype("C:\Windows\Fonts\\ariblk.ttf",25)

Eu sei que este post é antigo, mas hoje me ajudou a chegar à solução. Então eu espero que a ajuda ninguém.

=)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top