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');?>