Teil von  SELFPHP
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Vorschaubilder erstellen

Am Ende der Seite finden Sie das komplette Beispiel als Download.

Systemvoraussetzung

  • Linux
  • Windows
  • PHP 4 >= 4.0.6
  • PHP 5
  • GDLib

Datei(en)

create_thumb.php

Problem


Gerade wenn Sie eine Webseite mit sehr vielen Bildern besitzen, sollten Sie darauf achten, dass Sie jeweils Vorschaubilder anzeigen und nicht die originalen Bilder. In der Regel schauen sich Ihre Besucher nicht alle Bilder an, müssen aber warten, bis alle Bilder geladen sind.

Je nach Größe Ihrer Bilder kann dieser Prozess eine Weile dauern. Nicht zu unterschätzen ist auch der entstehende Traffic, der zu Ihren Lasten geht.

Wir zeigen Ihnen in diesem Beispiel eine Lösung auf, wie Sie aus JPG-, PNG- und GIF-Bildern kleine Vorschaubilder erzeugen.


Lösung

Wir wollen hier zeigen, wie Sie aus einer großen Bilddatei ein Vorschaubild erstellen. Dabei achten wir darauf, dass die Proportionen beibehalten werden.

function resizePicture($file, $width, $height)
   @param   string     $file
   @param   integer   $width
   @param   string     $height
   @return   bool

Die Funktion resizePicture() erwartet als Parameter die Bilddatei ($file), die maximal mögliche Bildbreite ($width) und die maximal mögliche Bildhöhe ($height). Im ersten Schritt überprüfen wir, ob die übergebene Datei existiert (6) und brechen die Funktion ab (7), falls dies nicht der Fall ist.

Wir schicken dann einen Header (9) zum Browser, sodass er die Information bekommt, dass im Anschluss ein JPG-Bild übertragen wird. Für unsere weiteren Berechnungen und Kontrollmechanismen benötigen wir noch Informationen über das bestehende Bild (11). Wir ermitteln also mit getimagesize() folgende Bildinformationen, die wir als Array erhalten.

  • Breite des Bildes
  • Höhe des Bildes
  • Grafik-Typ - 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF
  • HTMLZeichenkette - " height=xx width=xx"

Wir fragen jetzt im nächsten Schritt ab, um welchen Dateityp es sich handelt.

03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:

42:
43:
44:
45:
function resizePicture($file$width$height)
{

    if(!
file_exists($file))
        return 
false;
    
    
header('Content-type: image/jpeg');

    
$info getimagesize($file);

    if(
$info[2] == 1)
    {
        
$image imagecreatefromgif($file);
    }
    elseif(
$info[2] == 2)
    {
        
$image imagecreatefromjpeg($file);
    }
    elseif(
$info[2] == 3)
    {
        
$image imagecreatefrompng($file);
    }
    else
    {
            return 
false;
    }
    
    if (
$width && ($info[0] < $info[1])) 
    {
        
$width = ($height $info[1]) * $info[0];
    } 
    else 
    {
        
$height = ($width $info[0]) * $info[1];
    }

    
$imagetc imagecreatetruecolor($width$height);

    
imagecopyresampled($imagetc$image0000$width$height
         $info[0], $info[1]);

    
imagejpeg($imagetcnull100);    
    
}
Beispiel 9.3: create_thumb.php

Der eigentliche Aufruf für die Erzeugung der Bilder ist relativ simpel. Zunächst benötigen wir den Pfad zum Bild oder den Dateinamen (47), die maximale Bildbreite (49) sowie die maximale Bildhöhe (50). Mit all diesen Informationen können Sie die Funktion resizePicture() aufrufen (52) und das Bild erstellen lassen.

47:
48:
49:
50:
51:
52:
$file 'vorschaubilder/Tux.png';

$width 100;
$height 50;

resizePicture($file$width$height);
Beispiel 9.4: create_thumb.php

Falls Sie das Programm über eine Website aufrufen und nicht einzeln, sollten Sie das Programm am besten folgendermaßen starten. So wird das Bild direkt als Vorschaubild in Ihre Webseite eingebunden.

1:
<img src="create_thumb.php?file=Tux.png">

Sie müssen dann allerdings den Aufruf der Funktion folgendermaßen anpassen:

49:
50:
51:
52:
$width 300;
$height 200;

resizePicture
($_GET['file'], $width$height);

Nachfolgend sehen Sie drei Bilder, die mit diesem Programmcode erzeugt wurden. Dabei kann davon ausgegangen werden, dass sogar bei dem kleinsten Bild die Qualität noch recht gut ist und es somit als Thumbnail herhalten kann.


Abbildung 9.1: Originalgröße: 685 x 476 Vorschaubildgröße: 100 x 69


Abbildung 9.2: Originalgröße: 685 x 476 Vorschaubildgröße: 200 x 138


Abbildung 9.3: Originalgröße: 685 x 476 Vorschaubildgröße: 300 x 208

 



 


Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!

Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.




 

Download

Info   ZIP BZIP2 TARGZ
Größe   508.00 Byte 586.00 Byte 583.00 Byte

Alle Beispiele als PHP-Datei(en)

Hier haben Sie die Möglichkeit, sich sämtliche auf dieser Seite gezeigten Beispiele als PHP-Dateien direkt downzuloaden.

Umständliches Copy & Paste ist daher nicht mehr notwendig, da alle Beispiele sofort ausprobiert werden können.

Sie haben bei der Auswahl der bereitgestellten Downloads mehrere Möglichkeiten, je nachdem welches Komprimierungsverfahren Sie bevorzugen.

Zurück zur Übersichtsseite


 




:: Premium-Partner ::

Webhosting/Serverlösungen

Pixel X weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Zend Technologies GmbH weitere Sponsoren
 


:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Dateien/Verzeichnisse mit Bzip2 entpacken

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


PING auf Domain oder IP durchführen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de