Seite 1 von 1

Python - PIL --> ImageFont

Verfasst: Samstag 1. August 2009, 15:02
von Meitei
So - hallo Leute^^,
Wenn ich eine Font mit ImageFont.truetype öffne ist alles okay, jedoch wenn ich es mit ImageFont.FreeTypeFont probiere - bekomme ich einen Error "File "C:\Python25\lib\site-packages\PIL\ImageFont.py", line 121, in __init__
self.font = _imagingft.getfont(file, size, index, encoding)
IOError: cannot open resource"
Liegt wahrscheinlich daran, da FreeTypeFont imagingft service benötigt - Nun wollte ich fragen, wie ich das nun lösen könnte^^.

Vielen Dank im Voraus!

seey'

Verfasst: Samstag 1. August 2009, 15:32
von BlackJack
Du könntest einfach `ImageFont.truetype()` benutzen. Das funktioniert doch.

Verfasst: Samstag 1. August 2009, 16:08
von Meitei
Ja - aber würde es gerne mit FreeTypeFont machen^^. Wobei ich nicht wirklich weiß, ob das dann mein Problem löst, aber ein versuch ist es wert.

seey'

Verfasst: Samstag 1. August 2009, 17:08
von BlackJack
*Warum*!? Welches Problem?

Verfasst: Samstag 1. August 2009, 17:56
von Meitei
mit TTC's mit TTF's ist alles okay, weil ich hol mir nämlich mit getsize die width und height. Wenn ich das mit TTF's mache alles in Butter, aber bei TTC's ist das spacing einfach "zu" groß (klingt vielleicht etwas komisch). Natürlich könnte ich mit FontCollector immer die TTC nehmen und zu TTFs machen, aber das würde ich mir gerne ersparen.

seey'

Verfasst: Samstag 1. August 2009, 18:20
von BlackJack
@Meitei: Ich weiss zwar nicht genau was das bedeutet, bin mir aber ziemlich sicher das `FreeTypeFont` direkt zu verwenden, statt sich von der `truetype()`-Funktion so ein Objekt geben zu lassen, keinen Unterschied macht. Die Funktion sucht halt unter Windows nur zusätzlich im entsprechenden Windows-Systemverzeichnis nach der Datei falls sie im aktuellen bzw. angegebenen Verzeichnis nicht gefunden wird.

Verfasst: Samstag 1. August 2009, 19:00
von Meitei
Hm~... Okay, danke^^
Aber wieso gibt mit FreeTypeFont überhaupt so einen Error aus? Weil getfont vom _imagingft module gibt mir ebenfalls 'n Error aus, glaube sogar denselben. Naja könnte das Problem vielleicht sein, dass er bei TTC sich nicht mehr auskennt welche Font er nehmen soll - da es ja eine Ansammlung von Fonts ist, und deshalb sowas macht?
Dachte mir, dass FreeTypeFont da vielleicht noch paar andere Sachen zusätzlich macht, die truetypefont nicht macht, aber wenn es nur zur Sicherheit falls die Font nicht gefunden wurde nochmal im System sucht, bringt mich das auch nicht weiter :/.

seey'

Verfasst: Samstag 1. August 2009, 19:09
von BlackJack
@Meitei: `FreeTypeFont` gibt dir diesen Fehler aus, weil die Datei, die Du da angibst *dort* nicht existiert. Genau *den* Fehler fängt `truetype()` nämlich ab und sucht noch woanders.

Wenn Du *noch* eine Abstraktionsschicht runtergehst und `_imagingft.getfont()` direkt aufrufst, wird es dadurch natürlich nicht besser.

Verfasst: Samstag 1. August 2009, 19:56
von Meitei
Ah, cool - jetzte versteh ich's xD.
Danke für die Antwort BlackJack
:D

EDIT: Was ist eigentlich dieser "index" der standardmäßig auf 0 gesetzt ist? Und was für encoding's gibt es. Ich kenne daweil nur die, die auch im PIL-Handbook sind?
seey';)