Search code examples
phpimageresizegdresolution

Resize image to a higher resolution with PHP


I want to resize images to a fixed resolution (540x540 or 640x640). my source image sizes vary from 320x320 to 720x720. Can someone give a solution for resizing these images? I'm using PHP with GD

Thank you.


Solution

  • resize.php

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

    Output.php

    <?
    include ("rezise.php");
    $piclocation="images/123.jpg";
    $picsavelocation="images/123.jpg";
    
    $image = new SimpleImage();
    $image->load(''.$piclocation.'');
    $image->resize(188,282);
    $image->save(''.$piclocation.'');
    
    
    header('Content-type: image/jpeg');
    echo file_get_contents(''.$picsavelocation.'');
    unlink($save_rand_name);
    ?>