Einführung in die gdLibrary (gdLib)
Bildupload
200 Bilder einzeln mit dem Bildbearbeitungsprogramm seines Vertrauens bearbeiten, speichern und per
FTP hochladen ist mitunter sehr mühsam. Automatisiert kann man das auch mit der gdLib machen: Nach einem Dateiupload
lassen wir die Library das Bild formatieren, fügen ein Wasserzeichen ein und geben das ganze als neue Bilddatei aus.
Bis auf den Dateiupload selbst können wir schon alles. Schauen wir uns deshalb nun den Upload selbst an.
Das richtige Formular
Erstellen wir nun das Formular, mit dessen Hilfe der User in der Lage sein soll, ein Bild hochzuladen. Damit wir
den Upload später richtig verarbeiten können, muss das Formular mit enctype="multipart/form-data"> gekennzeichnet sein.
Nicht minder wichtig ist der Name unseres Dateiauswahlfeldes, hier "meinbild".
<form action="uebung05.php" method="post" enctype="multipart/form-data"> <input type="file" name="meinbild" /> <input type="submit" /> </form>
Die Verarbeitung nach dem Upload
Wir überprüfen, ob der User überhaupt ein Bild im Format JPEG hochgeladen hat und
ob es Fehler bei der Übermittlung der Daten an den Server gegeben hat. Da der Internet Explorer MIME-Typen anders
kennzeichnet, fragen wir nach den Typen image/pjpeg und image/jpeg.
Haben wir diese Hürde erst einmal übersprungen, benennen wir den neuen Dateinamen und das Vereichnis, in dem unser
neues Bild abgespeichert werden soll. An dieser Stelle könntet ihr eurer Bild für eine Galerie auch in der Datenbank
anmelden und den Dateinamen so dynmaisch generieren.
Nun ermitteln wir wieder Höhe und Breite des Bildes, verarbeiten das Bild wie gewohnt und speichern es dann lokal ab.
<?php // prüfen, ob der User überhaupt ein Bild im Format jpg übergeben hat if ((($_FILES['meinbild']['type'] == 'image/pjpeg') || ($_FILES['meinbild']['type'] == 'image/jpeg')) && ($_FILES['meinbild']['error'] == 0) && ($_FILES['meinbild']['tmp_name'] != none) && ($_FILES['meinbild']['name']) && ($_FILES['meinbild']['size'] > 0)) { $filename_old = $_FILES['meinbild']['name']; $filename_new = 'mein_neues_bild.jpg'; $savepath = 'pics/'; $width_old = $size[0]; $height_old = $size[1]; // Neues Format definieren, 600 px maximal bei Höhe und Breite if ($width_old > $height_old) { $width_new = '600'; } else { $height_new = '600'; } // Bild verarbeiten $picture_old = imagecreatefromjpeg($_FILES['meinbild']['tmp_name']); $picture_new = imagecreatetruecolor($width_new, $height_new); imagecopyresampled($picture_new, $picture_old, 0, 0, 0, 0, $width_new, $height_new, $width_old, $height_old); // Neues Bild speichern $create = imagejpeg($picture_new, $savepath.$filename_new); imagedestroy($picture_new); if ($create) { echo '<p>Das Bild wurde hochgeladen und kann <a href="'.$savepath.$filename_new.'">hier</a> angesehen werden.</p>'."\n"; } } else { } ?>
Wer möchte, kann den Quelltext noch erweitern, in dem er mehrere Versionen eines Bildes speichert, zum Beispiel ein Thumbnail oder eine Grossbildversion. Wer mag, kann auch wieder ein Wasserzeichen integrieren. Selbstverständlich könnt Ihr auch eine Schleife einbauen, die prüft, ob das Bild ein JPEG oder ein PNG ist und lasst dann die formatspezifischen Befehle durchlaufen.
Einführung in die gdLib | Version 2.0 alpha | 2005-10-07