<?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;
 
   //-----------------------------------------------
   //	Load Image file
   //-----------------------------------------------
   function load($filename) 
   {
		try
		{
			VAR_LOG_INFO("PHPRC - Image Lib Load", "Load Image: " . $filename);
			VAR_LOG_INFO("PHPRC - Image Lib Load", "Load Image: " . $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);
			}
		}
	    catch(Exception $ERR)
        {
            VAR_LOG_ERROR("PHPRC - Image Lib Load", $ERR->getMessage());
        }
   }
   
   //-----------------------------------------------
   //	Save Image file
   //-----------------------------------------------
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null)
   {
	   	try
		{
			//$image_type = $this->image_type;
			//echo $image_type;
			//exit;
			  
			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);
			}
		}
		catch(Exception $ERR)
        {
            VAR_LOG_ERROR("PHPRC - Image Lib Save", $ERR->getMessage());
        }
   }
   
   //-----------------------------------------------
   //	View Image file
   //-----------------------------------------------
   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);
   }
   
   //=============================================================================
   //	Resize Images
   //=============================================================================
   
   //-----------------------------------------------
   //	Resize Images 01 - Resize to Height
   //-----------------------------------------------
   function resizeToHeight($height) 
   {
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
 
   //-----------------------------------------------
   //	Resize Images 02 - Resize to Width
   //-----------------------------------------------
   function resizeToWidth($width) 
   {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }
 
   //-----------------------------------------------
   //	Resize Images 03 - Scale in %
   //-----------------------------------------------
   function scale($scale) 
   {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100;
      $this->resize($width,$height);
   }
 
   //-----------------------------------------------
   //	Resize Images 04 - Scale in %
   //-----------------------------------------------
   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_transparancy($width, $height)
   {
   	$uploadTempFile = $myField['tmp_name'];
   	
   	// Prepare variables
   	$imageInfo = getimagesize( $uploadTempFile );
   	$uploadWidth = $imageInfo[0];
   	$uploadHeight = $imageInfo[1];
   	$uploadType = $imageInfo[2];

   	
   	$srcImage = imagecreatefrompng( $uploadTempFile );
   	
   	$targetImage = imagecreatetruecolor($width, $width);
   	imagealphablending($targetImage, false);
   	imagesavealpha($targetImage, true);
   	
   	imagecopyresampled
   	( 
   		$targetImage, 
   		$srcImage,
   		0, 0,
   		0, 0,
   		$width, $height,
   		$uploadWidth, $uploadHeight 
   	);
   	
   	imagepng(  $targetImage, 'out.png', 9 );
   }
   
}
?>