Domanda

Io sto usando un codice che caricare un'immagine, mettere l'immagine nella cartella "ridimensionare", ridimensionare l'immagine, spostare l'immagine in un'altra cartella, quindi eliminare l'immagine dalla cartella "ridimensionare", però io' sto ottenendo il seguente errore:

" Errore irreversibile: ammessi dimensioni della memoria di 33554432 byte esaurito (tenta di allocare 14172 byte) in /home/photogra/public_html/administrator/components/com_gallery/admin.gallery.php sulla linea 649 "

Le immagini non sono nemmeno grandi! (Ad es. 265KB)

Ecco il codice che sto utilizzando (con i numeri di riga):

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         };

Anche quando ottengo questo errore, le immagini sono sempre bloccati nella cartella "ridimensionare" .. Se qualcuno può aiutare, sarebbe fantastico! :)

È stato utile?

Soluzione

Si sta cercando di ridimensionare tutte le immagini in una directory senza liberare la memoria dopo ogni uno. Prova ad aggiungere

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

Per cominciare. Inoltre, scollegare l'immagine non appena hai finito con esso, piuttosto che l'iterazione all'interno di una directory per la seconda volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top