Проблем с image resize

DownFall

Registered
Здравейте,

Опитах се сам да си напиша система за upload на снимки и си работи перфектно, но имам следния проблем:

Когато се опитам да кача голяма снимка (Например 1.5MB+) се качва на сървъра без проблеми, но при създаването на умален вариант на снимката ми излиза грешката File (P7030011.JPG) uploaded successfull!


Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 14592 bytes) in C:\xampp\htdocs\upload\resize.php on line 31


Resize.php
Код:
<?php
/*
* File: SimpleImage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
* 
* This program is free software; you can redistribute it and/or 
* modify it under the terms of the GNU General Public License 
* as published by the Free Software Foundation; either version 2 
* of the License, or (at your option) any later version.
* 
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details: 
* http://www.gnu.org/licenses/gpl.html
*
*/
 
class SimpleImage {
   
   var $image;
   var $image_type;
 
   function load($filename) {
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image,$filename);         
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image,$filename);
      }   
      if( $permissions != null) {
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image);         
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image);
      }   
   }
   function getWidth() {
      return imagesx($this->image);
   }
   function getHeight() {
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100; 
      $this->resize($width,$height);
   }
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;   
   }      
}
?>

Използвам следната функция:
Код:
function resize($file, $new_file, $new_width, $new_height)
{
	require_once ('resize.php');
	$image = new SimpleImage();
	$image->load($file);
	$image->resize($new_width,$new_height);
	$image->save($new_file);

	return 1;
}

Код:
if($width > $max_width_resized || $height > $max_height_resized)
{
resize($path_original, $path_resized, $width/5, $height/5);
}

Защо се получава тази грешка и как да я оправя? :(
Благодаря предварително.
 
Не съм много сигурен, но мисля че в php.ini имаше ред memory limit, пробвай да го вдигнеш :?:
 
php.ini
Код:
[PHP]
short_open_tag = Off
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =
expose_php = On
max_execution_time = 60
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors = On
display_startup_errors = On
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
arg_separator.output = "&"
variables_order = "GPCS"
register_globals = Off
register_long_arrays = Off
register_argc_argv = On
auto_globals_jit = On
post_max_size = 128M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".;C:\xampp\php\PEAR"
doc_root =
user_dir =
extension_dir = "C:\xampp\php\ext"
enable_dl = On
cgi.force_redirect = 0
file_uploads = On
upload_tmp_dir = "C:\xampp\tmp"
upload_max_filesize = 128M

128M е и тук..
 
Да, естествено :)

config.php файла ми започва по следния начин (Както каза replace)
Код:
<?php
ini_set('memory_limit', '3200M');
А него го include-вам във всички останали файлове..

Извадка от php.ini съм дал в предното си мнение, там Memory limita също е 128M.. След всяка промяна рестартирах апачето (даже по 2-3 пъти, за да съм сигурен) и въпреки това ефект няма, а проблема все още е на лице.. :(
 
Само мемори лимита не стига, пробвай така:
ini_set('upload_max_filesize', '32M');
ini_set('memory_limit', '32M');
ini_set('post_max_size', '32M');
 
Няма ефект..

Код:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 14592 bytes) in C:\xampp\htdocs\upload\resize.php on line 35
 

Back
Горе