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.

  • Sleep () stoppt Threads
  • WxMessageBox mit einem Auto-Close-Timer in wxPython
  • Python Difflib Deltas und vergleichen Ndiff
  • Warum python json.dumps klagt über ascii decoding?
  • GAE - Einschließlich externer Python-Module, ohne sie zum Repository hinzuzufügen?
  • Python Drag & Drop Explorer Dateien zu tkinter Eintrag Widget
  • 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?

  • Datenbank mit mehreren SQL-Anweisungen aktualisieren
  • Flasche admin: sqlalchemy.exc.InterfaceError (Fehlerbindungsparameter 8)
  • Führen Sie ein Python-Skript in Perl
  • Lxml :: etree :: _ ElementStringResult.getparent () funktioniert falsch
  • HTML-Formularname Array-Parsing in Pyramide (Python)
  • Mit pyHook, um Maus-Koordinaten zu spielen, um später zu spielen
  • 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.