Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Samstag, 14. Juni 2003, 18:49

Tutorial: Jetzt generiere ich mir Thumbnails.

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
Signatur von »t-ob-i« {SIGNATUR}

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »t-ob-i« (14. Juni 2003, 18:51)


2

Mittwoch, 29. September 2004, 23:40

Also Danke erstmal für das nette Tutorial.

Leider funktioniert es bei mir nicht ganz. Ich bekomme immer nur ein
schwarzes thumbnail mit dem Namen thumb-meinbild.jpg
und die Folgende Fehlermeldung

Zitat

Warning: imagecopyresized(): Invalid image dimensions in /www/htdocs/v127062/Martin_spielwiese/test.php on line 23

Die PHP version ist PHP Version 4.3.4. Ich habe es mit Xampp probiert und mit komerziellem webspace. :arg:

was könnte mein Fehler sein?
Ich habe die Qulität auch mal verändert, hatte aber auch keinen Erfolg

oop1
Signatur von »oop1« _________

3

Donnerstag, 28. Oktober 2004, 09:19

sooo ... jetzt funktioniert es ... hab mal eine kleine Änderung vorgenommen ... Tippfehler

vorher

PHP-Quelltext

1
imagecopyresized($new_bild,$vorlage,0,0,0,0,$new_breite,$new_hoehe,v_breite,$v_hoehe); // Das geladene Bild auf Thumbnailgröße verkleinern


nachher

PHP-Quelltext

1
imagecopyresized($new_bild,$vorlage,0,0,0,0,$new_breite,$new_hoehe,$v_breite,$v_hoehe); // Das geladene Bild auf Thumbnailgröße verkleinern


wer den Unterschied findet darf ihn behalten :grin:
Signatur von »TheNobody Style«

4

Mittwoch, 15. Dezember 2004, 21:25

Ich habe jetzt auch noch en Fehler gefunden.

PHP-Quelltext

1
 if ( $v_height v_breite )


Bei v_breite fehlt das $.

PHP-Quelltext

1
 $v_height
, soll wahrscheinlich auch $v_hoehe heißen.

Wenn Tobi das geändert hat, kann ja jemand
dises Posting löschen, ich will ja keine Diskussion wegen eines $ anzetteln :approve:
Signatur von »oop1« _________

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »oop1« (15. Dezember 2004, 21:28)