Thorsten Steffen: Problem mit GD-Version prüfen

Beitrag lesen

Hio,

Wie ich den Release-Notes zu PHP 4.3.0 entnommen habe, ist dort als Verbesserung genannt, dass die GD-Funktionen jetzt wirklich nur noch existieren (und mit function_exists() geprüft werden können), wenn die gdlib die Funktion tatsächlich unterstützt. Daraus schließe ich, dass es vorher auf diese Weise eben nicht möglich war. :)

Hab mir PHP 4.3 noch nicht wirklich angeschaut, aber diese "Neuerung" macht durchaus Sinn :). Konnte das nicht so wirklich nachvollziehen, welchen Sinn es macht eine Funktion als "existierend" zu deklarieren wenn sie garnicht zur Verfügung steht. Ich hab noch ein wenig nachgelesehen im PHP-Manuel. Es scheint so, als wurde diese Funktion zwar mit PHP 4.06 eingeführt, kann aber nur eingesetzt werden wenn GD >2 zur Verfügung steht.

Mit anderen Worten: Krieg' irgendwie PHP 4.3.0 auf den Server, oder lass den Automatismus sein. Deine Alternative wäre, den Benutzer des Skripts manuell entscheiden zu lassen, welche Funktion auf dem Server zur Verfügung steht. imagecopyresampled() benötigt jedenfalls ganz sicher die gdlib 2.x, mit gdlib 1.x wirst du nichts werden. Eventuell könntest du ja auch (frag mich aber nicht, wie) die Versionsnummer der gdlib abfragen.

Das mit PHP 4.3 dürfte schwer sein, ist nicht mein Server ;)
PHP 4.3 stellt sicherlich gute Neuerungen zur Verfügung, wobei mein Anliegen ist Skripte zu schreiben welche unter möglichst allen PHP4-Versionen laufen.
Den Automatismus sein lassen, hmm, die Idee ist zunächst mal nicht schlecht. Bisher fahre ich dort eine halb und halb Lösung, meine Klasse besitzt eine interne Funktion ImageCopyResampleBicubic (eine modifizierte Variabte aus von php.net), welche bessere Ergebnisse liefert als imageCopyResized, diese kann deaktiviert werden. Sollte das auch mit dem imagecopyresampled so tun. Wobei ich mir schwer vorstellen, wenn man die Qualitätsunterschiede betrachtet, warum man die alte Funktion benutzen sollte.
Ich versuche aber immer einen anderen Ansatz von Automatismus zu fahren, d.h. es gibt ein Standardverhalten, welches man auf Wunsch ändern kann. So kann muss ich, wenn ich mich im "defaultbereich" bewege nicht viel Aufwand betreiben um ein Thumbnail zu erzeugen. Im Endeffekt reicht das Instanzieren der Klasse mit dem Dateinamen und der Aufruf von createThumbnail().

Ich habe mir vorläufig damit geholfen, zu prüfen ob ich ein bild mit imageCreateTrueColor() erzeugen kann um herauszufinden ob GD>2 vorhanden ist.
Wie gesagt alternativ würde man an die Infos über phpinfo() kommen, wobei diese Funktion schon Ausgabe erzeugt und ich kein fan davon bin, das eine Funktion "ungefragt" Ausgabe erzeugt. Sicherlich ein besserer Weg wäre es für Funktionen ala phpinfo(), das sie nur die Informationen zur Verfügung stellen und dem Benutzer die Ausgabe überlassen.

gl & hf

Thorsten