Tutorial: Jetzt generiere ich mir Thumbnails.
Heute ist ein guter Tag ein wenig Text zu schreiben. Als Thema habe ich mir die GD-Bibliothek ausgesucht - ich möchte jedoch nur einen kleinen Einstieg in die Grafikbearbeitung mit PHP geben.
Als Aufgabe steht zuerst das erstellen eines Thumbnails mit PHP in der Breite bzw. Höhe von 100 Pixeln. Die Höhe wird dabei selbstverständlich automatisch angepasst. Der einfach halt halber berücksichtige ich hierbei nur JPEG-Bilder.
Geben ist ein beliebiges Foto das wir nun erst einmal öffnen und die Höhe und die Breite ermitteln.
|
PHP-Quelltext
|
1
2
3
4
5
6
7
|
<?
$pic = 'meinbild.jpg';
$vorlage = imagecreatefromjpeg($pic); // Bild laden
$v_height = imagesy($vorlage); // Höhe des Bildes
$v_width = imagesx($vorlage); // Breite des Bildes
?>
|
Damit die Bilder nun immer dasselbe Format haben und so aussehen als ob die Fotos nur z.B. um 90° gedreht auf dem Tisch liegen muss ein kleiner Vergleich her. Die Breite/Höhe wird mit simplerer Mathematik berechnet. Die 100 ist dabei die Höhe/Breite die das Thumbnail einmal hat.
|
PHP-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?
if ( $v_height > $v_breite )
{
// Die längere Seite ist die Höhe deswegen wird sie 100 Pixel hoch
$new_breite = $v_breite / $v_hoehe * 100;
$new_hoehe = 100;
}
else
{
// Die längere Seite ist die Breite - diesmal wird sie 100 Pixel
$new_hoehe = $v_hoehe / $v_breite * 100;
$new_breite = 100;
}
?>
|
Nun erstellen wir ein JPEG mit der berechneten Größe und lassen es PHP das Originalfoto auf Thumbnailgröße verkleinern.
|
PHP-Quelltext
|
1
2
3
4
5
|
<?
// Thumbnail generieren
$new_bild = imagecreatetruecolor($new_breite, $new_hoehe);
?>
|
Nun speichern wir das Bild in einer Qualität von 60% ab.
|
PHP-Quelltext
|
1
2
3
4
|
<?
// Bild speichern
imagejpeg($new_bild, "thumbnail.jpg", 60);
?>
|
Zusammenfassend noch einmal der komplette Quellcode:
|
PHP-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?
$pic = 'meinbild.jpg';
$vorlage = imagecreatefromjpeg($pic); // Bildvorlage laden
$v_hoehe = imagesy($vorlage); // Höhe des Bildes
$v_breite = imagesx($vorlage); // Breite des Bildes
if ( $v_height > $v_breite )
{
// Die längere Seite ist die Höhe deswegen wird sie 100 Pixel hoch
$new_breite = $v_breite / $v_hoehe * 100;
$new_hoehe = 100;
}
else
{
// Die längere Seite ist die Breite - diesmal wird sie 100 Pixel
$new_hoehe = $v_hoehe / $v_breite * 100;
$new_breite = 100;
}
// Thumbnail generieren
$new_bild = imagecreatetruecolor($new_breite, $new_hoehe);
imagecopyresized($new_bild,$vorlage,0,0,0,0,$new_breite,$new_hoehe,$v_breite,$v_hoehe); // Das geladene Bild auf Thumbnailgröße verkleinern
// Bild speichern
imagejpeg($new_bild, "thumb-".$pic, 60);
?>
|
Weitere Informationen unter der PHP-Befehlsreferenz:
http://de.php.net/image
Es folgt: Jetzt beschrifte ich meine Bilder automatisch mit PHP