سؤال

أنا أستخدم رمز يقوم بتحميل صورة، ووضع الصورة في مجلد "تغيير الحجم"، تغيير حجم الصورة، نقل الصورة إلى مجلد آخر، ثم حذف الصورة من مجلد "تغيير حجم"، ومع ذلك أحصل على الخطأ التالي:

"خطأ فادح: حجم الذاكرة المسموح بها 33554432 بايت استنفدت (حاول تخصيص 14172 بايت) في / home/photogra/public_html/administrator/components/com_gallery/admin.gallery.php على الخط 649"

الصور ليست كبيرة! (على سبيل المثال 265 كيلو بايت)

إليك الرمز الذي أستخدمه (مع أرقام السطر):

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

أيضا عندما أحصل على هذا الخطأ، تتعثر الصور في مجلد "تغيير حجم" .. إذا كان أي شخص يمكن أن يساعد، فهذا سيكون رائعا! :)

هل كانت مفيدة؟

المحلول

أنت تحاول تغيير حجم جميع الصور في دليل دون تحرير الذاكرة بعد كل واحد. حاول إضافة

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

للمبتدئين. أيضا، إلغاء ربط الصورة بمجرد الانتهاء من ذلك بدلا من التكرار فوق الدليل مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top