Denis Potschien 9. August 2012

PHP: Intelligente Bildbearbeitung im Live-Projekt mit PHPImageWorkshop

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:

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:

$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():

$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:

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:

$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():

$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:

$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

Denis Potschien ist seit 2005 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. Als Webdesigner und -entwickler gehören HTML5 und CSS3 zu seinen Kernthemen, weshalb er dazu 2013 ein Buch geschrieben hat. „Pure HTML5 und CSS3“ richtet sich an alle, die Vorkenntnisse haben, sich aber bisher mit HTML5 und CSS3 nicht oder nur am Rande beschäftigt haben.
Dr. Webs exklusiver Newsletter
Hinweise zum Datenschutz, also dem Einsatz von Double-Opt-In, der Protokollierung der Anmeldung, der Erfolgsmessung, dem Einsatz von MailChimp als Versanddienstleister und deinen Widerrufsrechten findest du in unseren Datenschutzhinweisen.

Ein Kommentar

  1. 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….

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kennst du schon unseren Newsletter?

Hinweise zum Datenschutz, also dem Einsatz von Double-Opt-In, der Protokollierung der Anmeldung, der Erfolgsmessung, dem Einsatz von MailChimp als Versanddienstleister und deinen Widerrufsrechten findest du in unseren Datenschutzhinweisen.

Cookies

Weitere Informationen zu den Auswahlmöglichkeiten findest du hier. Dazu musst du zunächst keine Auswahl treffen!

Um Dr. Web zu besuchen, musst du eine Auswahl treffen.

Deine Auswahl wurde gespeichert!

Informationen zu den Auswahlmöglichkeiten

Was du erlaubst!

Um fortfahren zu können, musst du eine Auswahl treffen. Nachfolgend erhältst du eine Erläuterung der verschiedenen Optionen und ihrer Bedeutung.

  • Ich stimme zu:
    Du erlaubst uns das Setzen aller Cookies, die wir in unseren Datenschutzhinweisen genannt haben. Dazu gehören Tracking- und Statistik-Cookies. Aus dem Tracking per Google Analytics bieten wir auf der Seite Datenschutz ein Opt-Out, also die Möglichkeit der Abmeldung, an.
  • Ich stimme nicht zu:
    Wir verzichten bei dieser Option auf den Einsatz von Google Analytics. Die für den Betrieb von Dr. Web notwendigen Cookies werden aber dennoch gesetzt. Einzelheiten entnimmst du bitte den Datenschutzhinweisen

Du kannst deine Cookie-Einstellungen jederzeit hier ändern: Datenschutz. Impressum

Zurück