PHP Ölümcül Hata yükleme / yeniden boyutlandırma sırasında

1 Cevap php

Ancak ben alıyorum, "resize" klasöründeki görüntüyü silin, bir resim upload "resize" klasörüne resim koymak, görüntüyü yeniden boyutlandırmak, başka bir klasör içine görüntüyü hareket edecek bir kod kullanıyorum Aşağıdaki hata:

"Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 14172 bytes) in /home/photogra/public_html/administrator/components/com_gallery/admin.gallery.php on line 649"

Görüntüler bile büyük değildir! (Örn. 265KB)

İşte (satır numaraları ile) kullanıyorum kodu:

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

Herkes yardımcı olabilir o hata olsun Ayrıca, görüntüleri "resize" klasöründe sıkışmış alıyorsanız .., bu harika olurdu! :)

1 Cevap

Her birinin ardından bellek boşaltarak olmadan bir dizindeki tüm görüntüleri yeniden boyutlandırmak için çalışıyoruz. Eklemeyi deneyin

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

Yeni başlayanlar için. Ayrıca, en kısa sürede yerine dizinde üzerinde ikinci kez yineleme daha onunla bitti gibi görüntü bağlantısını.