burghi'sphp-dummies.de
PHP für Einsteiger und Fortgeschrittenere - an laufenden Scripten erklärt
06.02.2012, 10:47 Uhr - Impressum
Prüft, ob eine Datei oder ein Verzeichnis existiert
Sendet einen HTTP-Header in Rohform
Copy and resize part of an image with resampling
Erzeugt ein neues Bild im JPEG-Format, welches aus einer Datei oder von einer URL gelesen wird
Create a new true color image
Ausgabe des Bildes im Browser oder als Datei
Ermittelt die Bild-Breite
Ermittelt die Bild-Höhe
Gibt eine Datei aus
Löscht eine Datei

Tutorials - Fortgeschritten - Bilder und Thumbnails - Thumbnails speichern

Tutorials - Fortgeschritten
Bilder 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 */
?>
Ich speichere hier im Verzeichnis "upload", weil sonst hat kein Verzeichnis auf diesem Server Schreibrechte.
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);
?>
Hier mal damit du n bisschen spielen kannst, kannst du die Thumbdatei löschen und das Script mal testen.
(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)
benutzte Bilder upload/gitarrenthumb.jpg
<?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";
?>
© 2004-2005 - Impressum