
In der Webentwicklung musst du regelmäßig Bilder bearbeiten: Avatare, Banner, Miniaturansichten oder was deine Website sonst noch anzeigen soll. PHP bringt dafür mehrere Bibliotheken mit, allen voran GD und Imagick. Dieser Artikel stellt die wichtigsten Funktionen beider Bibliotheken vor, mit Codebeispielen, die du direkt in deine PHP-Anwendung übernehmen kannst.
Die Bibliothek GD in PHP verwenden
GD ist eine PHP-Bibliothek zur Bildbearbeitung. Sie ist in den meisten PHP-Installationen von Haus aus enthalten, was den Einstieg leicht macht. GD unterstützt die folgenden Bildformate: JPG, PNG, GIF, BMP und WBMP.
Ein Bild mit GD laden und ausgeben
Um ein Bild mit GD zu laden, nimmst du die zum Bildtyp passende Funktion imagecreatefrom*() (jpg, png, gif und so weiter). Sie gibt eine GD-Ressource zurück, die das im Speicher gehaltene Bild darstellt. Anschließend gibst du das Bild mit header und der zum Format passenden Funktion image*() (imagejpeg, imagepng, imagegif und so fort) im Browser aus.
<?php
// Das Bild in eine GD-Ressource laden
$image = imagecreatefromjpeg('image.jpg');
// Das Bild ausgeben
header('Content-Type: image/jpeg');
imagejpeg($image);Ein Bild mit GD skalieren
Zum Skalieren eines Bildes mit GD nimmst du die Funktion imagecopyresampled. Sie kopiert ein GD-Bild auf die angegebenen Zielmaße und interpoliert dabei, damit die Qualität des skalierten Bildes erhalten bleibt.
<?php
// Das Bild in eine GD-Ressource laden
$image = imagecreatefromjpeg('image.jpg');
// Das Bild skalieren
$image_resized = imagecreatetruecolor(200, 200);
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, 200, 200, imagesx($image), imagesy($image));
// Das skalierte Bild ausgeben
header('Content-Type: image/jpeg');
imagejpeg($image_resized);Text auf ein Bild schreiben mit GD
Um Text auf ein GD-Bild zu schreiben, nimmst du die Funktion imagettftext. Sie fügt dem Bild Text hinzu, wobei du Schriftart, Größe, Winkel und Farbe des Textes angibst.
<?php
// Das Bild in eine GD-Ressource laden
$image = imagecreatefromjpeg('image.jpg');
// Text auf das Bild schreiben
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', 'Hello World !');
// Das Bild ausgeben
header('Content-Type: image/jpeg');
imagejpeg($image);Die Bibliothek Imagick verwenden
Imagick ist eine weitere PHP-Bibliothek für die Bildverarbeitung. Sie kann mehr als GD: Ebenen und Masken, Formatkonvertierung, Kantenerkennung und Rauschunterdrückung. Imagick unterstützt sehr viele Bildformate, auch Vektorformate wie SVG.
Bevor du Imagick verwendest, musst du prüfen, ob die PHP-Erweiterung imagick auf deinem Server installiert und aktiviert ist. Das erledigt der folgende Befehl:
php -m | grep imagickTaucht Imagick in der Liste der geladenen Erweiterungen auf, kannst du die Klassen und Methoden der Bibliothek in deinem PHP-Code benutzen. Andernfalls musst du die Erweiterung Imagick auf deinem Server erst installieren und aktivieren.
Ein Bild mit Imagick laden und ausgeben
Um ein Bild mit Imagick zu laden, erzeugst du ein Objekt der Klasse Imagick und übergibst den Pfad zum Bild. Dieses Objekt steht für das im Speicher gehaltene Bild, und über seine Methoden bearbeitest du es. Zur Ausgabe genügt ein echo auf das Imagick-Objekt.
<?php
// Das Bild in ein Imagick-Objekt laden
$imagick = new Imagick('image.jpg');
// Das Bild ausgeben
header('Content-Type: image/jpeg');
echo $imagick;Ein Bild mit Imagick skalieren
Zum Skalieren eines Bildes mit Imagick nimmst du die Methode resizeImage des Imagick-Objekts. Sie skaliert das Bild auf die angegebenen Zielmaße und verwendet dabei einen Resampling-Filter, damit die Qualität des skalierten Bildes erhalten bleibt. Imagick bietet mehrere Resampling-Filter an, etwa FILTER_LANCZOS, FILTER_BOX oder FILTER_CUBIC.
<?php
// Das Bild in ein Imagick-Objekt laden
$imagick = new Imagick('image.jpg');
// Das Bild skalieren
$imagick->resizeImage(200, 200, Imagick::FILTER_LANCZOS, 1);
// Das skalierte Bild ausgeben
header('Content-Type: image/jpeg');
echo $imagick;Text auf ein Bild schreiben mit Imagick
Um Text auf ein Bild zu schreiben, nimmst du die Methode annotateImage des Imagick-Objekts. Sie fügt dem Bild Text hinzu, wobei du Schriftart, Größe, Winkel und Farbe des Textes angibst.
<?php
// Das Bild in ein Imagick-Objekt laden
$imagick = new Imagick('image.jpg');
// Text auf das Bild schreiben
$draw = new ImagickDraw();
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
$draw->setFillColor('black');
$imagick->annotateImage($draw, 10, 30, 0, 'Hello World !');
// Das Bild ausgeben
header('Content-Type: image/jpeg');
echo $imagick;
Fazit
Dieser Artikel hat die wichtigsten Funktionen der Bibliotheken GD und Imagick für die Bildverarbeitung in PHP vorgestellt. Du hast gesehen, wie du ein Bild lädst und ausgibst, wie du es skalierst und wie du Text darauf schreibst. Diese Codebeispiele kannst du direkt in deine PHP-Anwendung übernehmen. Sieh dir ruhig auch die übrigen Methoden und Optionen der beiden Bibliotheken an, um noch mehr aus der Bildverarbeitung in PHP herauszuholen.


