Bildbearbeitung

Intelligente Bildbearbeitung im Live-Projekt mit PHPImageWorkshop

9. August 2012
von

Bilder müssen für ein Webprojekt oft bearbeitet werden. Da ist es nötig, Bilder zuzuschneiden, zu verkleinern oder mit einem Wasserzeichen zu versehen. Vieles geschieht in Bildbearbeitungsprogrammen wie Photoshop. Hier und da ist es jedoch sinnvoll, die Bildbearbeitung automatisiert über ein Script laufen zu lassen. PHPImageWorkshop ist eine Bibliothek, die nützliche Funktionen zur serverseitigen Bildbearbeitung zur Verfügung stellt.


PHPImageWorkshop

Voraussetzung und Installation

PHPImageWorkshop besteht aus einer einzelnen PHP-Datei, die eingebunden werden muss, um die darin enthaltene Klasse „ImageWorkshop“ nutzen zu können. Da in der PHP-Datei der Namespace „PHPImageWorkshop“ definiert wurde, muss dieser beim Aufruf der Klasse immer mit angegeben werden:

1
2
3
require_once("ImageWorkshop.php");
 
$neuesbild = new \PHPImageWorkshop\ImageWorkshop();

Alternativ kann die Zeile mit der Namespace-Angabe auch auskommentiert werden. Dann kann die Klasse auch ohne diese Angabe verwendet werden. In der Dokumentation und den Beispielen wird immer ohne Verweis auf den Namespace gearbeitet:

1
$neuesbild = new ImageWorkshop();

Die Bildbearbeitung erfolgt über die GD-Library, die in den meisten PHP-Installationen von Haus aus mit dabei ist. Außerdem setzt PHPImageWorkshop die PHP-Version 5.3.x voraus.

Bilder skalieren und beschneiden

Oft wird eine serverseitige Bildbearbeitung eingesetzt, wenn ea darum geht, Bilder zu skalieren oder zu beschneiden – zum Beispiel für die Erzeugung von Thumbnails. PHPImageWorkshop bietet hierzu verschiedene Funktionen an. Um Bilder zu skalieren, gibt es die Funktionen resizeInPixel() und resizeInPourcent():

1
2
3
4
5
6
7
$thumbnail = new ImageWorkshop(array(
  "imageFromPath" => "bild.jpg"
));
 
$thumbnail->resizeInPixel(200, 100);
 
$bildausgabe = $thumbnail->getResult();

Zunächst wird einer Variablen eine neue Instanz der „ImageWorkshop“-Klasse inklusive Pfad zum Originalbild zugewiesen. Anschließend wird über resizeInPixel() das Bild auf 200 x 100 Pixel skaliert. Im letzten Schritt überführt man das skalierte Bild in die Variable $bildausgabe, welche dann über die PHP-Funktion imagejpeg() ausgegeben werden kann:

1
imagejpeg($bildausgabe, null, 95);

Statt einen Wert für Höhe und Breite anzugeben, kann auch nur einer der Werte angegeben werden. So verkleinert man das Bild proportional, wenn der zusätzliche dritte Parameter der Resize-Funktion auf true gesetzt ist:

1
$thumbnail->resizeInPixel(200, null, true);

Analog zur Funktion resizeInPixel() existiert die Variante resizeInPourcent(), die statt Angaben in Pixel Prozentwerte berücksichtigt.


Bilder skalieren

Bei den Resize-Funktionen wird immer der gesamte Bildinhalt dargestellt. Wenn es darum geht, das Seitenverhältnis des zu skalierenden Bildes zu ändern, ohne das Bild in seiner Darstellung zu verzerren oder nur einen Teilbereich eines Bildes zu zeigen, gibt es die Beschneidungsfunktionen cropInPixel() und cropInPourcent():

1
$thumbnail->cropInPixel(200, 200, 100, 200, "LT");

Angegeben werden die Maße des Bildes (hier 200 x 200 Pixel), die Start-Koordinaten des darzustellenden Bildausschnittes (hier 100 Pixel von links, 200 Pixel von oben) sowie die Position (hier „LT“).


Bilder beschneiden

Die Position gibt an, von welcher Stelle des Bildes aus der Ausschnitt gewählt werden soll. „LT“ steht für „left top“, also die linke obere Ecke des Bildes. Bei „RB“ („right bottom“) würde von der rechten unteren Ecke ausgegangen werden.

Bilder kombinieren

Neben dem Skalieren und Beschneiden ist auch das Kombinieren von mehreren Bildern eine oft verwendete Funktion bei der serverseitigen Bildbearbeitung. Auch hierzu bietet PHPImageWorkshop eine leicht zu verwendende Funktion:

1
2
3
4
5
6
7
8
9
10
$bild_mit_logo = new ImageWorkshop(array(
  "imageFromPath" => "bild.jpg",
));
 
$logo = new ImageWorkshop(array(
  "imageFromPath" => "logo.png",
));
$bild_mit_logo->addLayer(1, $logo, 10, 10, "LB");
 
$bildausgabe = $logo_mit_bild->getResult();


Bilder kombinieren

Im Beispiel werden zwei Bilddateien per ImageWorkshop Variablen zugewiesen. Anschließend wird die Logodatei per addLayer() auf das Bild gelegt. Dabei wird die Position sowie die Ausrichtung des Logos angegeben, im Beispiel jeweils 10 Pixel von der linken unteren Ecke („LB“) entfernt.

Fazit

PHPImageWorkshop ist schnell in ein Webprojekt eingebunden. Dabei ist die Datei keine 100 Kilobyte groß. Die Funktionen, die zur Verfügung stehen, lassen sich zwar auch mit PHP-Bordmitteln nachbauen. Mit PHPImageWorkshop geht es jedoch schneller und einfacher, da viele Zwischenschritte die ImageWorkshop-Klasse übernimmt und daher nicht manuell berücksichtigt werden müssen.

(dpe)

Denis Potschien

Seit 2005 ist er freiberuflich als Kommunikationsdesigner tätig, seit Anfang 2010 im Kreativkonsulat in Iserlohn, einem Büro für Gestaltung und Kommunikation. Dort betreut er kleine und mittelständische Unternehmen ebenso wie kommunale Körperschaften und Organisationen aus Südwestfalen und dem Ruhrgebiet.

Ein Kommentar zu „Intelligente Bildbearbeitung im Live-Projekt mit PHPImageWorkshop

  1. Efren am 12. August 2012 um 21:03

    Hallo, ich habe den Bericht über PHPImageWorkshop gelesen und war eigentlich sehr an dem Scribt interessiert.

    Ich habe jedeoch nach Download von der Webseite diverse Beispiele ausprobiert und es werden mir sehr viele Fehler in dem Script selbst angezeigt.

    Ebenfalls funktionieren Ihre in dem Bericht kurz aufgeführten Scripts nicht. Enttäuschend….

Ein Kommentar? Schön!

Wir freuen uns immer über Leser, die durch nützliche und konstruktive Beiträge zum Thema eine Diskussion anstoßen oder den Artikel mit weiteren Informationen anreichern. Alle Kommentare werden in diesem Sinne moderiert. Zum Kommentar-Fairplay gehört für uns auch der Einsatz von rel="nofollow". Bitte verwenden Sie zudem als Namen weder eine Domain noch ein spamverdächtiges Wort. Vielen Dank!