Python - PIL --> ImageFont

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Meitei
User
Beiträge: 15
Registriert: Donnerstag 23. Juli 2009, 10:20
Wohnort: Österreich (Niederösterreich)

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'
BlackJack

Du könntest einfach `ImageFont.truetype()` benutzen. Das funktioniert doch.
Meitei
User
Beiträge: 15
Registriert: Donnerstag 23. Juli 2009, 10:20
Wohnort: Österreich (Niederösterreich)

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'
BlackJack

*Warum*!? Welches Problem?
Meitei
User
Beiträge: 15
Registriert: Donnerstag 23. Juli 2009, 10:20
Wohnort: Österreich (Niederösterreich)

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'
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.
Meitei
User
Beiträge: 15
Registriert: Donnerstag 23. Juli 2009, 10:20
Wohnort: Österreich (Niederösterreich)

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'
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.
Meitei
User
Beiträge: 15
Registriert: Donnerstag 23. Juli 2009, 10:20
Wohnort: Österreich (Niederösterreich)

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';)
Antworten