Frage

Ich bin über einen Code, der ein Bild hochladen, wird, um das Bild in den Ordner „die Größe“, die Größe des Bildes, um das Bild in einen anderen Ordner verschieben, löschen Sie dann das Bild von der „Größe ändern“ -Ordner, aber ich m die folgende Störung zu erhalten:

" Fatal error: Erlaubt Speichergröße von 33554432 Bytes erschöpft (versucht 14172 Bytes zuzuteilen) in /home/photogra/public_html/administrator/components/com_gallery/admin.gallery.php auf Leitung 649

Die Bilder sind nicht einmal groß! (ZB. 265KB)

Hier ist der Code verwende ich (mit den Zeilennummern):

635         move_uploaded_file($_FILES['image']['tmp_name'],$mainframe->getCfg( 'absolute_path' ) ."/virtualgallery/images/resize/$newname");
636         
637         /* resize images - width 600px */   
638         $docRoot = $GLOBALS['mosConfig_absolute_path'];
639         $pathToImages = $docRoot.'/virtualgallery/images/resize/';
640         $pathToThumbs = $docRoot.'/virtualgallery/images/';
641         $thumbHeight = 600;
642         
643         $dir = opendir( $pathToImages );
644         while (false !== ($fname = readdir( $dir ))) {
645             $info = pathinfo($pathToImages . $fname);
646             if ( strtolower($info['extension']) == 'jpg' ) {
647                 $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
648                 $width = imagesx( $img );
649                 $height = imagesy( $img );
650                 $new_width = floor( $width * ( $thumbHeight / $height ) );
651                 $new_height = $thumbHeight;
652                 $tmp_img = imagecreatetruecolor( $new_width, $new_height );
653                 imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
654                 imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
655             };
656         };
657         closedir( $dir );
658         
659         /* delete file(s) from resize folder */
660         $dir = $docRoot.'/virtualgallery/images/resize/';
661         foreach(glob($dir.'*.*') as $v) {
662             unlink($v);
663         };

Auch wenn ich diese Fehlermeldung erhalten, Bilder in der „Größe ändern“ Ordner stecken immer .. Wenn jemand helfen kann, das wäre fantastisch sein! :)

War es hilfreich?

Lösung

Sie versuchen, alle Bilder in einem Verzeichnis, um die Größe, ohne den Speicher nach jeder zu befreien. Versuchen Sie,

imagedestroy($img);
imagedestroy($tmp_img);

Für den Anfang. Auch entkoppeln das Bild, sobald Sie damit fertig sind, anstatt über das Verzeichnis ein zweites Mal iteriert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top