Einführung in die gdLibrary (gdLib)
Bildformate
Wir haben ein erstes Bild erstellt und wollen nun ein bestehendes, lokales Bild öffnen und daraus ein neues Bild mit neuem Format generieren.
Aufgabe: Bestehendes Bild öffnen und neu formatieren
Damit wir die Proportionen des Ursprung-Bildes beibehalten können, müssen wir zunächst einmal mit getimagesize() die Größen ermitteln. Damit unser
Code übersichtlich bleibt, packen wir Breite und Höhe in eindeutige Variablen: $width_old = $size[0]; und $height_old = $size[1];.
Ausgestattet mit diesen Informationen wissen wir, ob es sich bei dem Bild um ein Hoch- oder Querformat handelt und können beispielsweise neben der festen Breite $width_new
beim Querformat die neue Höhe ausrechnen.
Mit imagecreatefromjpeg(); lesen wir schließlich das Originalbild ein. imagecreatetruecolor() erstellt uns ein neues
Bild, in welches wir dann unser Originalbild einbetten. Dies geschieht mit dem Befehl imagecopyresampled(). Zuletzt geben wir noch das Bild mit imagejpeg
aus.
imagecopyresampled() weich zu zeichnen - ähnlich wie Photoshop dies macht. Die alte gd-Version 1.6
erlaubte nur die Anwendung des Befehles imagecopyresized(), also die Formatanpassung ohne Weichzeichung. Als Ergebnis bekommt man dann aber ein verpixeltes Bild,
welches man niemanden zumuten sollte. Tauscht in der Beispieldatei einfach beide Befehle mit den gleichen Optionen aus, um den Unterschied zu sehen.
Der Code:
<?php $file = 'buecher.jpg'; // Originalformat auslesen $width_old = $size[0]; $height_old = $size[1]; // Bild laden $old_picture = imagecreatefromjpeg($file); // Neues Format definieren, dabei Proportionen beibehalten if ($width_old > $height_old) { $width_new = 250; } else { $height_new = 190; } // Neues Bild erzeugen $new_picture = imagecreatetruecolor($width_new, $height_new); // Kopiert das Ursprungsbild und formatiert es um + Weichzeichnung. imagecopyresampled($new_picture, $old_picture, 0, 0, 0, 0, $width_new, $height_new, $width_old, $height_old); // Erzeugtes Bild an den Browser ausgeben imagejpeg($new_picture); } ?>

- Die Unterschiede: Linkes Bild mit
imagecopyresampled(erst ab gd2) und rechts die Versionimagecopyresizedbei älterer gd-Version
Einführung in die gdLib | Version 2.0 alpha | 2005-10-07