|
Prüft, ob eine Datei oder ein Verzeichnis existiert
Sendet einen HTTP-
Copy and resize part of an image with resampling
Erzeugt ein neues Bild im JPEG-
Create a new true color image
Ausgabe des Bildes im Browser oder als Datei
Ermittelt die Bild-
Ermittelt die Bild-
Gibt eine Datei aus
Löscht eine Datei |
Tutorials - Fortgeschritten - Bilder und Thumbnails - Thumbnails speichernTutorials - FortgeschrittenBilder und Thumbnails: Thumbnails speichern
Da das Kleiner-Rechnen von Bildern doch ne gehörige Weile dauert, sollte man sich überlegen, die Bilder vielleicht zu speichern. Dies ist supereasy, das hat die Funktion "imageJPEG()" (bzw "imagePNG()") schon mit eingebaut. Und zwar einfach als 2. Parameter. also praktisch:
<?php header("Content-Type: image/jpeg"); $Img = imageCreateFromJPEG("images/gitarre.jpg"); $oBreite = imageSX($Img); $oHöhe = imageSY($Img); $nBreite = $oBreite / 10; $nHöhe = $oHöhe / 10; $Out = imageCreateTrueColor($nBreite, $nHöhe); imageCopyResampled($Out, $Img, 0, 0, 0, 0, $nBreite, $nHöhe, $oBreite, $oHöhe); imageJPEG($Out, "/upload/gitarrenthumb.jpg"); /* In der Datei "/upload/gitarrenthumb.jpg" wird das Bild "$Out" jetzt gespeichert. */ imageJPEG($Out); /* Allerdings wird es jetzt nicht mehr an den Browser gesendet, dies muss dann nochma explizit geschehen */ ?> Sinnvoller wäre natürlich ein eigenes "thumbs"-Verzeichnis Apropos sinnvoll. Das Script jetzt ist auf jeden Fall absolut sinnlos. Weil jetzt wird ja trotzdem noch immer der Thumb erstellt... Man sollte überprüfen, ob die Thumb-File nicht schon existiert:
<?php header("Content-Type: image/jpeg"); $thumbfile = "/upload/gitarrenthumb.jpg"; if(file_exists($thumbfile)) { /* wenn die Thumbfile jetzt schon besteht, */ readfile($thumbfile); /* wird sie ausgelesen und an den Browser gesendet (readfile) */ exit; } /* Sonst gehts weiter wir gehabt */ $Img = imageCreateFromJPEG("images/gitarre.jpg"); $oBreite = imageSX($Img); $oHöhe = imageSY($Img); $nBreite = $oBreite / 10; $nHöhe = $oHöhe / 10; $Out = imageCreateTrueColor($nBreite, $nHöhe); imageCopyResampled($Out, $Img, 0, 0, 0, 0, $nBreite, $nHöhe, $oBreite, $oHöhe); imageJPEG($Out, $thumbfile); imageJPEG($Out); ?> (unter "erzeugter HTML-Quelltext" zeigt er dir an, was er wirklich gemacht hat - ob Bild erstellt oder Datei ausgelesen) Nach dem Löschen wird es wesentlich länger dauern ! (Naja... nicht wirklich, ich weiss... der Server ist halt scheiße schnell hier, aber wenn mal ne ganze Fotoalben-Seite gethumbt werden müsste... dann würd es extrem länger dauern)
<?php @unlink("/upload/gitarrenthumb.jpg"); /* @ verhindert Fehlermeldung, falls die Datei nicht gelöscht werden kann */ /* (weil sie z.B. schon gelöscht wurde und nicht mehr existiert) */ echo "Thumbdatei gelöscht"; ?> |