PIL schneidet die Briefe ab

Ich habe viel Zeit damit verbracht, meine erste Web-Anwendung mit Python zu machen, und ich verwende Pil für die Erstellung von Bildern. Nachdem ich viel gelesen habe, habe ich es geschafft, korrekte Textausrichtung zu implementieren, zu verpacken, Dateien mit vielen Erweiterungen zu generieren usw.

Allerdings wird der gesamte von PIL erzeugte Text oben abgeschnitten. Hier ist ein Beispiel.

  • Beschleunigen geolocation algorithmus in python
  • Python String ersetzt auf der Basis von Zeichen NICHT in RegEx
  • Mit win32com.client in python wie zu finden und ersetzen mehrfachen text
  • Wie kann ich die numerischen Daten in Python richtig ausrichten?
  • Führen Sie __init__ aus, nachdem das Panel erstellt wurde?
  • Wie man IndentationError fängt
  • Beispiel für PIL-generiertes Bild mit Text oben abgeschnitten

    Es sollte sagen, ŻÓĆjygpq in einer Vielzahl von Schriften (die Schriftnamen sind auf der linken Seite).

    Ich habe hier nur wenige Beiträge gefunden: Schriften, die mit PIL ausschneiden, aber ich möchte es vermeiden, ein anderes Modul zu benutzen (aggdraw); Da habe ich so viele Dinge in PIL schon herausgefunden, dass ich gerne daran festhalten würde.

    Ich habe viele Schriften in verschiedenen Größen ausprobiert, aber der Text ist immer noch abgeschnitten. Ich habe sogar versucht, PIL-Schriftarten zu benutzen, aber es funktioniert immer noch nicht. [Auch Umwandlung von OTF in BDF und PIL].

    Das ist auf Ubuntu. Was soll ich als nächstes versuchen?

  • Wie kann ich ein Matlab struct Array von scipy.io erstellen?
  • Warum bietet numpy.linalg.solve () präzisere Matrixinvertierungen als numpy.linalg.inv ()?
  • Löschen Sie einzelne Elemente aus einer Liste
  • In Python mit Flask, wie kann ich ein Objekt zum Download schreiben?
  • Richtige Möglichkeit, ein benutzerdefiniertes Popup-TKinter-Dialogfeld zu implementieren
  • Wie installiere ich Python 2.7.x unabhängig von / System / Library / Frameworks unter OSX Lion?
  • 2 Solutions collect form web for “PIL schneidet die Briefe ab”

    Ich hoffe, auf diesem einen falschen zu sein, aber die einzige korrekte Verlegenheit beruht auf dem Durchgreifen, wie _imagingft.c den Text macht. PIL hängt von FreeType für diese Aufgabe ab, aber PIL scheint die Positionierung falsch zu sein. Außerdem wird die Höhe in der getsize überschätzt (obwohl das kein Problem verursacht). Für den Moment habe ich einen Patch, um diese Probleme zu behandeln: http://pastebin.com/jP2iLkDN (es scheint ein besserer Weg, um den Render-Code Patch).

    Hier sind einige Beispiele für die Ausgabe, die ich ohne Patch und mit dem Patch bekomme:

    Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

    Ergebnisse, die den in der verknüpften Diskussion vorhandenen Code verwenden. Auf OSX:

    Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

    Auf Ubuntu:

    Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

    Hier ist der Code, um die Top-Zahlen zu generieren:

     # -*- encoding: utf8 -*- import sys import Image, ImageDraw, ImageFont im = Image.new("RGBA", (1000, 1000), 'white') draw = ImageDraw.Draw(im) start_y = 7 text = u'\u00d1\u00d3yŻ\u00d4Ćgp\u010c\u0137' for i in xrange(28, 46, 2): font = ImageFont.truetype('Junicode-Bold.ttf', i) width, height = font.getsize(text) draw.rectangle((0, start_y, width, height + start_y), outline='blue') draw.text((0, start_y), text, font=font, fill='black') start_y += height + 7 im.crop((0, 0, width + 1, start_y + 2)).save(sys.argv[1]) 

    Die unteren Zahlen wurden nach dem in dem verknüpften Thema vorhandenen Code über PIL, der Teile des Textes abschneidet, erzeugt.

    Nicht die beste Lösung, aber ich sehe, dass die Leute dies gelöst haben, indem sie einen führenden Platz nach ihrem Text hinzufügen.

    Python ist die beste Programmiersprache der Welt.