Go Back   Novahq.net Forum > Computers > Web design and Programming
FAQ Community Calendar Today's Posts Search

Web design and Programming Discuss website creation and other programming topics.

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 01-03-2009, 12:25 PM
atholon is offline atholon
"ath-hole"

Join Date: Jan 2003
Location: Failville.
Posts: 11,357

Send a message via MSN to atholon
Another question

Hi there,

I wrote a PHP class to crop images using the gd library...works fine on my local server but it appears my host has a smaller memory limit...any ideas of how to work around it? It seems I cannot upload any images larger than 300k with this cropping class.

This is the error I get:
Quote:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2048 bytes) in /home/digitalh/public_html/includes/ImageCropper.php on line 124

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
The class is sort of long:
Code:
<?php 
class ImageCropper
{
  var $mediumWidth, $mediumHeight, $resizeWidth, $resizeHeight, $theImage, $width, $height, $newWidth, $newHeight, $imageType, $thumbSize, $error; 

  function ImageCropper()
  {
    $this->mediumWidth = 275;
    $this->mediumHeight = 200;  

    $this->resizeWidth = 325;
    $this->resizeHeight = 250;
    $this->error = null;
  }  // Constructor
  
  function makeThumb($image, $iName, $iSize=110)     // Thumbnails are square so there are only three params
  {    
    $this->thumbSize = $iSize;
    
    list($this->width,$this->height, $this->imageType) = getimagesize($image);        
    
    if($this->generateImageFromType($image))
    {    
      if ($this->width > $this->height)
      {  
        $this->resizeWidth = $this->thumbSize + 100;
        $this->makeLandscape();
      }
      else if ($this->height > $this->width)         
      {    
        $this->makePortrait();
        $this->resizeHeight = $this->thumbSize + 100;
      }
      else
      {
        $this->resizeWidth = $this->thumbSize + 100;
        $this->makeLandscape();
      }
      
      if ($this->width > $this->resizeWidth || $this->height > $this->resizeHeight)
      {
          if($this->imageType != IMAGETYPE_GIF)
          {
            $tempImage = imagecreatetruecolor( $this->newWidth, $this->newHeight );
            $temp = imagecreatetruecolor( $this->thumbSize, $this->thumbSize);
          }
          else
          {
             $tempImage = imagecreate( $this->newWidth, $this->newHeight );
             $temp = imagecreate( $this->thumbSize, $this->thumbSize);          
          }
          
          imagecopyresampled( $tempImage, $this->theImage, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $this->width, $this->height );          
          imagecopy( $temp, $tempImage, 0, 0,($this->newWidth/2)-($this->thumbSize/2),($this->newHeight/2)-($this->thumbSize/2), $this->newWidth, $this->newHeight ); 
          $this->renderImage($temp, $iName);           
          imagedestroy( $temp );
          imagedestroy( $tempImage );
      }      
      else
      {
          if($this->imageType != IMAGETYPE_GIF)
          {
            $temp = imagecreatetruecolor( $this->thumbSize, $this->thumbSize);
          }
          else
          {
             $tempImage = imagecreate( $this->newWidth, $this->newHeight );
             $temp = imagecreate( $this->thumbSize, $this->thumbSize);          
          }
          imagecopy( $temp, $this->theImage, ($this->thumbSize/2)-($this->width/2), ($this->thumbSize/2)-($this->height/2),0,0, $this->width, $this->height ); // resize to width
          $this->renderImage($temp, $iName); 
          imagedestroy( $temp ); 
      }
    }
    else
      echo $this->error;
       
  } // End Make Thumb

  function makeOtherSize($image, $iName, $iWidth=275, $iHeight=200)
  {
    $this->mediumWidth = $iWidth;
    $this->mediumHeight = $iHeight;
    
    $this->resizeWidth = $iWidth + 50;
    $this->resizeHeight = $iHeight + 50;    
   
    list($this->width,$this->height, $this->imageType) = getimagesize($image);     
    if($this->generateImageFromType($image))
    {
         
      if ($this->width > $this->height)
      {       
        $this->makeLandscape();
      }
      else if ($this->height > $this->width)         
      {    
        $this->makePortrait();
      }
      else
      {
        $this->makeLandscape();
      }
      
      if ($this->width > $this->resizeWidth || $this->height > $this->resizeHeight)
      {
          if($this->imageType != IMAGETYPE_GIF)
          {          
            $tempImage = imagecreatetruecolor( $this->newWidth, $this->newHeight );
            $temp = imagecreatetruecolor( $this->mediumWidth, $this->mediumHeight);                                                       
          }
          else
          {
            $tempImage = imagecreate( $this->newWidth, $this->newHeight );
            $temp = imagecreate( $this->mediumWidth, $this->mediumHeight);
          }
          imagecopyresampled( $tempImage, $this->theImage, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $this->width, $this->height );
          imagecopy( $temp, $tempImage, 0, 0,($this->newWidth/2)-($this->mediumWidth/2),($this->newHeight/2)-($this->mediumHeight/2), $this->newWidth, $this->newHeight ); 
          
          $this->renderImage($temp, $iName);           
         
          imagedestroy( $temp );
          imagedestroy( $tempImage );
      }      
      else
      {      
          if($this->imageType != IMAGETYPE_GIF)
          {             
            $temp = imagecreatetruecolor( $this->mediumWidth, $this->mediumHeight);
          }
          else
          {
            $temp = imagecreate( $this->mediumWidth, $this->mediumHeight);          
          }
            imagecopy( $temp, $this->theImage, ($this->mediumWidth/2)-($this->width/2), ($this->mediumHeight/2)-($this->height/2),0,0, $this->width, $this->height ); // resize to width
            $this->renderImage($temp, $iName); 
            imagedestroy( $temp );
            imagedestroy( $tempImage );
            
       }
   }
   else
   {   
      echo $this->error;
   }  
  }
   
  function generateImageFromType($toBeMade)
  {
   switch($this->imageType)
   {
     case IMAGETYPE_GIF:  
        $this->theImage = imagecreatefromgif($toBeMade) or die("Error: Cannot find image!");
        return true; 
        break;
     case IMAGETYPE_JPEG:
        $this->theImage = imagecreatefromjpeg($toBeMade) or die("Error: Cannot find image!");
        return true;    
        break;
     case IMAGETYPE_PNG:
        $this->theImage = imagecreatefrompng($toBeMade) or die("Error: Cannot find image!");
        return true;     
        break;
    default:
      $this->error("This image type is not allowed:".$this->imageType);
      return false;
      break;
   }  
  }
  
  function renderImage($theImage,$iName)
  {
     switch ($this->imageType)
     {
      case IMAGETYPE_JPEG:
        imagejpeg($theImage, $iName); 
        break;   
      case IMAGETYPE_GIF: 
        imagegif($theImage, $iName);
        break;   
      case IMAGETYPE_PNG:
        imagepng($theImage, $iName);
        break;   
      default:
        break;     
     } 
  }
  function makeLandscape()
  {
    if ($this->width > $this->resizeWidth)
    {
         $ratio = $this->exceededAspectRatio();
         if ($ratio == true)
         {
            $this->newHeight = $this->resizeHeight;
            $this->newWidth = ceil( $this->newHeight*($this->width/$this->height));
            echo("got here");
         }
         else
         {          
            $this->newWidth = $this->resizeWidth;
            $this->newHeight = ceil( $this->newWidth*($this->height/$this->width));
         }
    }
    else
    {
        $this->newWidth = $this->width;
        $this->newHeight = $this->height;
    }
  } // End Make LandScape
  
  function makePortrait()
  {
    if ($this->height > $this->resizeHeight)
    {
         $ratio = $this->exceededAspectRatio();
         if ($ratio == true)
         {
            $this->newHeight = $this->resizeHeight;
            $this->newWidth = ceil( $this->newHeight*($this->width/$this->height));
            echo("got here");
         }
         else
         {          
            $this->newHeight = $this->resizeHeight;
            $this->newWidth = ceil( $this->newHeight*($this->width/$this->height));
         }   
    }
    else
    {
        $this->newWidth = $this->width;
        $this->newHeight = $this->height;
    }     
  }

  function exceededAspectRatio()
  {
    if ($this->width > $this->height)
    {
       if ($this->width / $this->height > 2)
       return true;        
    }
    else
    {
       return false;
    }
    if ($this->height > $this->width)
    {
       if ($this->height / $this->width > 2)  
       return true;       
    }
    else
    {
       return false;
    }
  }
}

?>
__________________
Reply With Quote
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Question ƒalcon Joint Operations 3 10-12-2006 04:45 PM
just a question Lucky Feedback / Novahq.net Support 3 07-29-2005 11:10 AM
Question SMITIE Sigs and Graphics 8 07-18-2005 07:20 PM
Question :D V99 Delta Force 7 09-10-2003 12:23 AM
i have a question †W¡§†ëÐ «M§§» Hardware and Software 5 08-23-2003 09:39 AM


All times are GMT -5. The time now is 07:40 AM.




Powered by vBulletin®