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.

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?

  • Image.Frompuffer mit 16-Bit-Bilddaten
  • Vergrößern Sie das Bild, das das Seitenverhältnis beibehält, und macht die Bild- und Landschaftsbilder genau gleich groß?
  • Kann PIL nicht richtig installieren auf Ubuntu 12.04
  • Wie generiere ich kreisförmige Thumbnails mit PIL?
  • Wie benutzt man PIL mit PyPy?
  • Tkinter Bildtransparenz
  • Split mehrseitige Tiff mit Python
  • PIL Encoder Jpeg nicht verfügbar [Duplizieren]
  • 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.