Start · Sprachen · PHP · Referenz · imagedestroy

imagedestroy

Funktion

Gibt den Speicher eines <code>GdImage</code>-Objekts frei und zerstört die Bildressource.

seit PHP 8.0.0 Kategorie: image

Signatur

imagedestroy(GdImage $image): bool

Beschreibung

imagedestroy() gibt den mit einem GD-Bildobjekt verbundenen Speicher frei. Sie sollte immer dann aufgerufen werden, wenn ein Bild nicht mehr benötigt wird, um Speicherlecks zu vermeiden – insbesondere in Skripten, die viele Bilder erzeugen oder verarbeiten (z. B. Batch-Konvertierungen oder Thumbnail-Generatoren).

Seit PHP 8.0 wird die frühere resource-Schnittstelle durch das typsichere GdImage-Objekt ersetzt. Das Objekt wird nach dem Aufruf ungültig; weiterer Zugriff darauf führt zu einem Fehler. In modernem PHP kann alternativ auch einfach unset() oder das Ende des Gültigkeitsbereichs genutzt werden, da GdImage-Objekte garbage-collected werden – imagedestroy() bleibt aber weiterhin als explizite und lesbare Methode empfohlen.

Typische Anwendungsfälle sind: Freigabe von Zwischenbildern in Bildbearbeitungs-Pipelines, sorgfältiges Ressourcenmanagement in lang laufenden PHP-Prozessen (z. B. unter PHP-FPM) sowie sauberes Aufräumen nach dem Senden eines Bildes an den Browser.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das zu zerstörende GdImage-Objekt, das zuvor von Funktionen wie imagecreate(), imagecreatefromjpeg() o. ä. zurückgegeben wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn das übergebene Objekt bereits ungültig ist).

Beispiele

JPEG-Datei laden, skalieren und Ressource freigeben

<?php
// Originalbild laden
$original = imagecreatefromjpeg('foto.jpg');

// Thumbnail erstellen (200x150 Pixel)
$thumb = imagecreatetruecolor(200, 150);
imagecopyresampled($thumb, $original, 0, 0, 0, 0, 200, 150, imagesx($original), imagesy($original));

// Thumbnail speichern
imagejpeg($thumb, 'thumbnail.jpg', 85);

// Ressourcen freigeben
imagedestroy($original);
imagedestroy($thumb);

echo "Thumbnail wurde erstellt und Speicher freigegeben.\n";
Thumbnail wurde erstellt und Speicher freigegeben.

Dynamisches Bild an den Browser senden und dann zerstören

<?php
// Einfaches PNG-Bild erzeugen
$image = imagecreatetruecolor(300, 100);
$bg    = imagecolorallocate($image, 30, 144, 255);
$text  = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, 299, 99, $bg);
imagestring($image, 5, 80, 40, 'programmierung.net', $text);

// HTTP-Header setzen und Bild ausgeben
header('Content-Type: image/png');
imagepng($image);

// Speicher explizit freigeben
imagedestroy($image);

// Wichtig · Fallstricke

Speicherverwaltung: Große Bilder (z. B. hochauflösende Fotos) können erheblichen RAM beanspruchen. Ohne imagedestroy() bleibt dieser Speicher bis zum Ende des Skripts belegt, was bei Batch-Verarbeitung vieler Bilder zu Speichermangel (Allowed memory size exhausted) führen kann.

PHP 8.0+: Da GdImage-Objekte dem normalen PHP-Garbage-Collector unterliegen, wird das Objekt auch automatisch zerstört, wenn keine Referenzen mehr darauf existieren. imagedestroy() kann jedoch sinnvoll sein, um den Zeitpunkt der Freigabe explizit zu steuern – etwa mitten in einer Schleife.

Deprecation-Hinweis: Vor PHP 8.0 wurde eine resource übergeben; die Funktion funktioniert seit 8.0 ausschließlich mit GdImage-Objekten.