EDIT: hinzugefügt komplettes ArbeitsbeispielPython Image Library - Schrift Positionierung
Ich habe folgendes Programm:
from PIL import Image, ImageDraw, ImageFont
FULL_SIZE = 50
filename = 'font_test.png'
font="/usr/share/fonts/truetype/msttcorefonts/arial.ttf"
text="5"
image = Image.new("RGBA", (FULL_SIZE, FULL_SIZE), color="grey")
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font, 40)
font_width, font_height = font.getsize(text)
draw.rectangle(((0, 0), (font_width, font_height)), fill="black")
draw.text((0, 0), text, font=font, fill="red")
image.save(filename, "PNG")
Dies erzeugt folgendes Bild:
Es scheint, dass beim Schreiben der Text-PIL-Bibliothek ein Rand oben hinzugefügt wird. Dieser Spielraum hängt von der Schriftart ab, die ich verwende.
Wie kann ich dies berücksichtigen, wenn ich versuche, den Text zu positionieren (ich möchte, dass er in der Mitte eines Rechtecks steht)?
(mit Python 2.7.6 mit Kissen 2.3.0 auf Ubuntu 14.04)
Bitte geben Sie ein ** vollständiges ** Programm an, das den Fehler einschließlich aller 'Import'-Anweisungen demonstriert. –
Der eine vernünftige Grund, den ich mir vorstellen kann, ist, wenn Open Sans proportionale Zahlen verwendet, in welchem Fall der Rand die Differenz zwischen der x-Höhe und dem Aufstieg wäre, in diesem Fall soll es dort sein. Der eine weniger vernünftige Grund ist, dass aus irgendeinem Grund die Größe eines Textlaufs in PIL eine Art "Offset" hinzugefügt hat: https://pillow.readthedocs.org/en/3.0.x/_modules/PIL /ImageFont.html. Vielleicht ist das der Unterschied, den du siehst? Würde nicht erklären, warum sich das schwarze Rechteck nicht hinter dem ganzen Buchstaben erstreckt. – millimoose
Vollständiges Arbeitsbeispiel hinzugefügt. – Filip