hi guyaving the following problem, im having the following problems.

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3264 bytes) in C:\xampp\xampp\htdocs\bestbuy\includes\SimpleImage.php on line 32

Y i am getting this error as the file isnt bigger?
when i try to upload file >2mb i get that error

here is the simpleimage code

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

Hi there,
Myself and a buddy at work were dumbfounded by a similar situation not too long ago. Our current working theory is that the GD library's imagecreate****** methods first turn any image into a bitmap, could be wrong but it explains all the extra memory usage.

Anycase, your best bet is to dynamically increase the memory limit for your script with an adaptation of the following:

$imageInfo = getimagesize("$file");
    $memoryNeeded = round(($imageInfo[0] * $imageInfo[1] *
    $imageInfo['bits'] * $imageInfo['channels'] / 8 + Pow(2, 16)) * 1.65);
    if (function_exists('memory_get_usage') && memory_get_usage() +
    $memoryNeeded > (integer) ini_get('memory_limit') * pow(1024, 2)) 
    {
        ini_set('memory_limit', (integer) ini_get('memory_limit') +
        ceil(((memory_get_usage() + $memoryNeeded) - (integer)
        ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) . 'M');
    }
    echo("Memory Need:".$this->ConvertSize($memoryNeeded)." <br/>");
This article has been dead for over six months. Start a new discussion instead.