PHP: Resize and crop image

Here is a image class which helps you to re-size or crop image in different width and height as you want. It also helps to re-size image by ratio.

To re-size image, This is a class of re-size image which have to save as file name SimpleImage.php:

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

}
?>

And example code is:

<?php
if( isset($_POST['submit']) ) {
	include('SimpleImage.php');
	$image = new SimpleImage();
	$image->load($_FILES['uploaded_image']['tmp_name']);
	$image->resizeToWidth(300);
	$image->resizeToHeight(200);
	$image->save('resizeImage.jpg');
//$image->output();
} 
else {
?> 

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="uploaded_image" />
<input type="submit" name="submit" value="Upload" />
</form>
<?php
}
?>