Arbeiten mit Bildern in PHP: Vollständiger Leitfaden zu GD und Imagick

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Bildern in PHP: die Bibliotheken GD und Imagick



Bildverarbeitung ist eine der Kernaufgaben der Webentwicklung. In PHP werden dafür zwei Hauptbibliotheken verwendet: GD (integriert) und Imagick (Wrapper um ImageMagick). In diesem Artikel werden wir ihre Möglichkeiten untersuchen, lernen, wie man Bilder in der Größe ändert, zuschneidet, Wasserzeichen hinzufügt und optimiert.



1. Die GD-Bibliothek



GD ist eine Standard-PHP-Erweiterung, die auf den meisten Hosting-Plattformen verfügbar ist. Sie ermöglicht das Erstellen, Ändern und Speichern von Bildern in den Formaten JPEG, PNG, GIF, WebP.



Einbindung und Überprüfung:

<?php// Prüfen, ob die GD-Erweiterung installiert istif (extension_loaded('gd') && function_exists('gd_info')) {    echo "GD ist installiert: ";    print_r(gd_info());} else {    echo "GD wurde nicht gefunden";}?>


1.1 Größenänderung eines Bildes (resize)



Das häufigste Szenario ist die Verkleinerung eines Bildes auf die gewünschten Maße unter Beibehaltung der Proportionen.



<?phpfunction resizeImage($sourcePath, $destPath, $newWidth, $newHeight) {    // Abmessungen des Quellbildes ermitteln    list($width, $height, $type) = getimagesize($sourcePath);        // Ressource aus der Quelldatei erstellen    switch ($type) {        case IMAGETYPE_JPEG:            $source = imagecreatefromjpeg($sourcePath);            break;        case IMAGETYPE_PNG:            $source = imagecreatefrompng($sourcePath);            break;        case IMAGETYPE_GIF:            $source = imagecreatefromgif($sourcePath);            break;        default:            return false;    }        // Neues Bild erstellen    $newImage = imagecreatetruecolor($newWidth, $newHeight);        // Transparenz für PNG/GIF beibehalten    imagealphablending($newImage, false);    imagesavealpha($newImage, true);        // Kopieren und skalieren    imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);        // Ergebnis speichern    imagejpeg($newImage, $destPath, 85); // Qualität 85%        // Speicher freigeben    imagedestroy($source);    imagedestroy($newImage);    return true;}

// Beispiel zur VerwendungresizeImage('photo.jpg', 'photo_thumb.jpg', 300, 200);?>


1.2 Bild zuschneiden (crop)



Durch Zuschneiden kann der mittlere Teil eines Bildes in der gewünschten Größe extrahiert werden.



<?phpfunction cropCenter($sourcePath, $destPath, $cropWidth, $cropHeight) {    list($width, $height) = getimagesize($sourcePath);    $source = imagecreatefromjpeg($sourcePath);        // Mittelpunktkoordinaten berechnen    $x = ($width - $cropWidth) / 2;    $y = ($height - $cropHeight) / 2;        $newImage = imagecreatetruecolor($cropWidth, $cropHeight);    imagecopyresampled($newImage, $source, 0, 0, $x, $y, $cropWidth, $cropHeight, $cropWidth, $cropHeight);        imagejpeg($newImage, $destPath, 90);    imagedestroy($source);    imagedestroy($newImage);}

cropCenter('photo.jpg', 'photo_cropped.jpg', 400, 400);?>


1.3 Wasserzeichen hinzufügen



Hinzufügen von Text oder einem Logo über dem Bild.



<?phpfunction addWatermarkText($sourcePath, $destPath, $text = "© PythonLib.ru") {    $source = imagecreatefromjpeg($sourcePath);    $width = imagesx($source);    $height = imagesy($source);        // Textfarbe (weiß mit Transparenz)    $color = imagecolorallocatealpha($source, 255, 255, 255, 50);        // Schriftgröße (verwendet integrierte Schriftart)    $fontSize = 5;    $x = 10;    $y = $height - 20;        imagestring($source, $fontSize, $x, $y, $text, $color);        imagejpeg($source, $destPath, 90);    imagedestroy($source);}

addWatermarkText('photo.jpg', 'photo_watermarked.jpg');?>


2. Die Imagick-Bibliothek

Empfehlungen