2 Stimmen

Imagedestroy gibt den Speicher nicht frei

Ich führe eine Schleife aus, die ein Skript enthält, das weiße Hintergründe in Bildern identifiziert und dann eine zugeschnittene Version des Bildes ohne diesen weißen Hintergrund kopiert. Am Ende der Schleife verwende ich imagedestroy, um den Speicher freizugegeben, aber das Skript überschreitet dennoch das Speicherlimit (>256 MB). Wie kann das sein?

Code innerhalb der Schleife:

$img = imagecreatefromjpeg($imgSrc);

/* Skript zur Identifizierung von Leerzeichen */

// neues Bild erstellen
$newimg = imagecreatetruecolor(
            imagesx($img)-($wsLeft+$wsRight), imagesy($img)-($wsTop+$wsBottom));

// neue Breite und Höhe erhalten
$width = imagesx($newimg);
$height = imagesy($newimg);

// Speicher freigeben
imagedestroy($newimg);
imagedestroy($img);

2voto

dazzafact Punkte 1990

Ich hatte die gleichen Probleme mit dem Speicher (das Erstellen Hunderte von Bildern in einer Schleife). Versuche, so viel wie möglich in Funktionen zu setzen. Aus irgendeinem Grund behandelt PHP Bild-Ressourcen anders in Funktionen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X