Ich möchte dem Bild russischen Text hinzufügen. Ich benutze PIL 1.1.7 und Python 2.7 auf Windows-Rechner. Da PIL without libfreetype library zusammengestellt, verwende ich die folgende auf Entwicklungsserver:Wie verwendet man Unicode-Zeichen mit PIL?
font_text = ImageFont.load('helvR24.pil')
draw.text((0, 0), 'Текст на русском', font=font_text)
(helvR24.pil
von http://effbot.org/media/downloads/pilfonts.zip genommen wird)
Auf Produktionsumgebung ich folgendes tun:
font_text = ImageFont.truetype('HelveticaRegular.ttf', 24, encoding="utf-8")
draw.text((0, 0), 'Текст на русском', font=font_text)
(versucht zu verwenden, unic
, cp-1251
anstelle von utf-8
)
In beiden Fällen werden keine russischen Zeichen angezeigt (stattdessen werden 'Quadrate' oder Blindzeichen angezeigt). Ich denke, es funktioniert nicht auf Entwicklungsumgebung, da höchstwahrscheinlich helvR24.pil
keine russischen Zeichen enthält (weiß nicht, wie man es überprüft). Aber HelveticaRegular.ttf
hat es sicher. Ich überprüfte auch, dass meine .py
Datei геа-8 Kodierung hat. Und es zeigt russische Zeichen auch mit Standardschrift nicht an:
draw.text((0, 0), 'Текст на русском', font=ImageFont.load_default())
Was sollte ich noch versuchen/verifizieren? Ich habe durch https://stackoverflow.com/a/18729512/604388 geschaut - es hilft nicht.
versuchen, den Text als Unicode-String zu übergeben: 'draw.text ((0, 0), u'Текст на русском ', font = ImageFont.load_default()) ' – mata
@mata, sicherlich habe ich das bereits versucht (sowie' unicode (' Текст на русском ',' utf-8 ') '). Es gibt 'UnicodeEncodeError: 'ascii' Codec kann Zeichen in Position 0-5 nicht codieren: Ordinal nicht im Bereich (128)' Bezug auf 'PIL \ ImageDraw.py", Zeile 267, Textmaske = font.getmask (Text, self.fontmode) '. –