======[PHP] Transparente Textgrafiken On-the-Fly erstellen====== =====Inhalt: ===== Einleitung Voraussetzungen Code Anwendung =====Einleitung===== Viele von euch kennen das Problem. Sie haben eine coole Schrift, die sie gerne in irgend einer Farbe als Titelgrafik verwenden würden. Oder als Navigationsbutton. Das bedeutet mühsam diese Grafiken erstellen, speichern und sauber verlinken. Mit jder zusätzlichen Seite müssen diese Dinger ebenfalls erstellt werden. Die bekannte Alternative sind Weft etc, wo man Schriften fürs Web bereitstellen kann. Leider verlangsamt dies die Ladezeit der Seite extrem. Doch mit PHP gibt es die Möglichkeit, eine Grafik beim Aufruf der Seite zu erstellen. Ganz individuell mit normalen ttf-Schriftarten. =====Voraussetzungen===== Auf dem PHP-Server mit GDlib. Dies sieht man im PHPinfo unter dem Punkt "gd". Ebenfalls muss man die Schrift irgendwo auf dem Server haben. =====Code===== Man erstellt also eine datei, die man später als Grafik aufruft. Die EInzelnen Komponenten der Datei sind direkt im Code dokumentiert DOCUMENT_ROOT // und dann den Pfad bis zu der Schrift erweitern define('C_FONT', 'C:/xampp/htdocs/test/tools/font/ttf/Arial.TTF'); // Hintergrundfarbe. RGB in Zahlen define('C_COLOR_BACKGROUND', '255,255,255'); // Schriftfarbe. RGB in Zahlen define('C_COLOR_TEXT', '0,0,0'); // Schrift hat transparanter Hintergund define('C_TRANSPARENT', true); // Uebergabeparameters: // txt Der darzustellende Text // s Schriftgrösse (optional) // r Randbreite um die Schrift (optional) // Anforderungen // GD-Lib muss installiert sein. Die Schrift muss sich am richtigen Ort befinden (ttf-Format)) // Beispielaufruf: // bunter Text // Standarthöhe $s = (isset($_GET['s'])) ? $_GET['s'] : 50; // Standartrahmen $r = (isset($_GET['r'])) ? $_GET['r'] : 10; // Standarttext $txt = (isset($_GET['txt'])) ? $_GET['txt'] : 'Es ist Kein Text definiert'; // Schriftpfad. Achtung, Serveradresse! // Zu finden in der phpinfo unter Apache Environment -> DOCUMENT_ROOT // Schriftbildgrösse ermitteln $box=imagettfbbox($s,0,C_FONT,$txt); // Grafik erstellen $im = imagecreate ($box[4]+$r, abs($box[7])+$r); //Grundfarben definieren (rgb)) // Background (Es empfiehlt sich diese ungefähr der Hintergrundtextur der Seite anzupassen, //da immer ein schwacher Rahmen bleibt. In unserem Fall nehm ich als Hintergrund Schwarz): $keys = array('r', 'g', 'b'); $cA = array_combine($keys, explode(',', C_COLOR_BACKGROUND)); $bc = ImageColorAllocate ($im, $cA['r'], $cA['g'], $cA['b']); // Textfarbe: $cA = array_combine($keys, explode(',', C_COLOR_TEXT)); $tc = ImageColorAllocate ($im, $cA['r'], $cA['g'], $cA['b']); // Hintergrund mit Hintergrundfarbe füllen imagefill($im,0,0,$bc); // Hintergrundfarbe als transparent definieren if(C_TRANSPARENT) imagecolortransparent($im,$bc); // Text einfügen ImageTTFText ($im, $s, 0, 0, abs($box[7]) , $tc, C_FONT, $txt); // Header ausgeben Header ("Content-type: image/png"); // Grafik als Png ausgeben ImagePNG ($im); // temporäre Grafik zerstören ImageDestroy ($im); ?> Also, den ganzen Grümpel speichern und dann mal mit den Parametern aufrufen.. (Anmerkung: Viele haben wie ich auf dem Lokalen Server die GD-Lib nicht installiert. In diesem Fall mal alles auf den Webserver werfen... =====Anwendung===== Die Datei wird nachher einfach aus dem HTML-Code aufgerufen bunter Text {{tag>PHP Tutorial}}