PHP Klasse für Bildskalierung & Bildbeschnitt

PHP bringt von sich aus mit der GD-Bibliothek mächtige Funktionen zur Bildbearbeitung. Allerdings sind Logik und mögliche Parameter sehr komplex. Wir haben daher die Routinen, die wir für viele unserer Projekte benutzen, in einer einfachen Klasse zusammengefasst.

Die Klasse processImg besteht aus nur einer Funktion und vier Variablen und bietet folgende Funktionalitäten:

  • Bilder (Jpeg, PNG, GIF) skalieren in drei Modi
    • scale (standard) Bild skalieren und Seitenaspekt beachten.
    • fit Einpassen in die gewünschte Bildgröße und den Hintergrund mit Farbe füllen.
    • crop Zentriert einpassen und zuschneiden zur gewünschte Bildgröße. Überstände abschneiden.
  • Bilder mit Wasserzeichen versehen
  • Bilder grauskalieren
processimg demo

Die Ausgabe erfolgt immer im JPEG-Format  in der Zieldatei oder Direkt auf dem Bildschirm. (Achtung die Zieldatei wird ohne Nachfrage überschrieben!)

Die funktion get() kennt folgende Parameter:

  • $source - Bildquelle mit Bildname und Pfad
  • $destination - Name und Pfad der Zieldatei oder NULL für Standardoutput
  • $size_w - Zielbreite
  • $size_h - Zielhöhe
  • $mode [optional] -  Verkleinerungsmodus (scale, crop, fit)
  • $grayscale [optional] - Grauskalieren 
  • $watermark [optional] - Wassermarken
Download der Klasse mit Beispielen

 processimg.zip

Die Anwendung sollte selbsterklärend sein. Die Klasse prüft rudimentär auf Fehler und gibt sie im PHP error.log aus. 

Beispiel für die Verwendung

// Erstellt aus dem Bild einbild.jpg eine vekleinerte 
// Version namens einkleinesbild.jpg
// Maximale größe 320x240
require_once("processimg.php");
$pimg = new processImg();
$pimg->create("einbild.jpg","einkleinesbild.jpg",320,240);
 

Noch ein Tipp für Anwendungen, die z.B. unabhängig von der Höhe eine bestimmte Breite erzwingen wollen. Einfach die Zielhöhe größer als die maximale Höhe der Ursprungsbilder wählen.

Die GD-Bibliothek benötigt außerdem viel Scriptspeicher. Daher sollte das PHP MemoryLimit auf 128 MB oder größer stehen.

Eine Alternative für große Webseiten ist außerdem die Verwendung von ImageMagick. Die ImageMagick sind sehr mächtig und schnell, stehen bei den meisten Hostern allerdings nicht zur Verfügung.