Signatur
Beschreibung
imagecrop() erzeugt aus einem bestehenden GD-Bild einen neuen Bildausschnitt, der durch ein Rechteck definiert wird. Das Rechteck wird als assoziatives Array mit den Schlüsseln x, y, width und height übergeben. Das Originalbild wird dabei nicht verändert; die Funktion gibt ein eigenständiges neues GdImage-Objekt zurück.
Die Funktion ist besonders nützlich, wenn Teile eines Bildes für Vorschaubilder, Avatare oder Zuschnitte benötigt werden, ohne das Original zu verändern. Sie arbeitet direkt mit GD-Ressourcen und benötigt keine externe Bibliothek.
Koordinaten außerhalb des Originalbilds sind erlaubt; Bereiche außerhalb des Originals werden dabei mit der Farbe Schwarz (oder Transparent bei Paletten mit Transparenz) aufgefüllt. Bei ungültigen Werten für width oder height (z. B. 0 oder negativ) gibt die Funktion false zurück.
Für automatische Zuschnitte basierend auf Farbe oder Inhalt existiert die verwandte Funktion imagecropauto().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Ein von einer GD-Funktion wie imagecreatefromjpeg() oder imagecreatetruecolor() erzeugtes GdImage-Objekt. |
|
| $rect Pflicht | array | Assoziatives Array, das das Zuschnittrechteck definiert. Erforderliche Schlüssel: x (int, X-Startkoordinate), y (int, Y-Startkoordinate), width (int, Breite des Ausschnitts), height (int, Höhe des Ausschnitts). |
Rückgabewert
GdImage-Objekt mit dem zugeschnittenen Bildausschnitt zurück. Im Fehlerfall (z. B. ungültige Rechteck-Parameter) wird false zurückgegeben.Beispiele
Einfacher Zuschnitt eines JPEG-Bildes
<?php
// Originalbild laden
$original = imagecreatefromjpeg('foto.jpg');
// Rechteck definieren: ab Punkt (50, 30), Breite 200, Höhe 150
$rect = ['x' => 50, 'y' => 30, 'width' => 200, 'height' => 150];
// Bild zuschneiden
$cropped = imagecrop($original, $rect);
if ($cropped !== false) {
// Zugeschnittenes Bild als JPEG speichern
imagejpeg($cropped, 'foto_cropped.jpg', 90);
imagedestroy($cropped);
echo "Zuschnitt erfolgreich gespeichert.";
} else {
echo "Fehler beim Zuschneiden.";
}
imagedestroy($original);
?>
Avatar-Zuschnitt aus hochgeladenem Bild
<?php
// Hochgeladenes PNG laden
$src = imagecreatefrompng('upload.png');
$srcW = imagesx($src);
$srcH = imagesy($src);
// Quadratischen Zuschnitt aus der Bildmitte berechnen
$size = min($srcW, $srcH);
$x = (int)(($srcW - $size) / 2);
$y = (int)(($srcH - $size) / 2);
$rect = ['x' => $x, 'y' => $y, 'width' => $size, 'height' => $size];
$avatar = imagecrop($src, $rect);
if ($avatar !== false) {
// Auf 100x100 Pixel skalieren
$thumb = imagecreatetruecolor(100, 100);
imagecopyresampled($thumb, $avatar, 0, 0, 0, 0, 100, 100, $size, $size);
imagepng($thumb, 'avatar.png');
imagedestroy($avatar);
imagedestroy($thumb);
echo "Avatar erstellt.";
}
imagedestroy($src);
?>
// Wichtig · Fallstricke
Ressourcenverwaltung: Das von imagecrop() zurückgegebene GdImage-Objekt ist unabhängig vom Original und muss nach Verwendung mit imagedestroy() freigegeben werden, um Speicherlecks zu vermeiden.
Koordinaten außerhalb des Bildes: Werden x oder y so gesetzt, dass Teile des Rechtecks außerhalb des Originalbildes liegen, füllt GD diese Bereiche mit Schwarz auf. Dies kann zu unerwarteten schwarzen Rändern führen.
Truecolor vs. Palette: Das erzeugte Zielbild ist immer ein Truecolor-Bild, unabhängig vom Typ des Quellbildes.