How to RESIZE and CROP IMAGE in php

Here is a image class which helps you to resize or crop image in different width and height as you want. It also helps to resize image by ratio.
To resize image, This is a class of resize 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
   }
?>

Advertisement

Go to Smartblog Theme Options -> Ad Management to enter your ad code (300x250)

9 Responses to “How to RESIZE and CROP IMAGE in php”

  1. March 31, 2011 at 6:23 pm #

    Оригинальная идея. Интересно сколько времени он на это потратил

    • June 13, 2011 at 4:34 am #

      I’m not easily impressed. . . but that’s impsreisng me! :)

    • June 14, 2011 at 2:51 pm #

      Real brain power on display. Takhns for that answer!

      • June 25, 2011 at 5:14 pm #

        That’s way more celevr than I was expecting. Thanks!

  2. June 13, 2011 at 12:57 pm #

    That’s the best anewsr of all time! JMHO

    • June 25, 2011 at 3:52 am #

      Thank God! Someone with bairns speaks!

  3. June 14, 2011 at 4:13 pm #

    IJWTS wow! Why can’t I think of thgnis like that?

    • June 25, 2011 at 12:32 pm #

      Hey, that’s pweofrul. Thanks for the news.

  4. Alex
    April 18, 2012 at 9:43 pm #

    You probably are not reading the comments, but this is in fact about the post
    I liked your class very much, but I found problems saving PNG with transparency.
    To fix this, just change the resize function:

    function resize($width,$height) {
    $new_image = imagecreatetruecolor($width, $height);
    imagealphablending($new_image, false);
    imagesavealpha($new_image, true);

    imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
    $this->image = $new_image;
    imagealphablending($this->image, false);
    imagesavealpha($this->image, true);

    }

Leave a Comment