Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

PHP Image Resize Class

DZone's Guide to

PHP Image Resize Class

·
Free Resource
A little class which uses GD2 for image resizing. 



  openImage($imgpath);
  }
  function openImage($imgpath) {
    if (!file_exists($imgpath)) throw new Exception('File doesn\'t exist!');
    $imageData=getimagesize($imgpath);
    if (!$imageData) {
      throw new Exception('Unknown image format!');
    } else {
      $this->imageType=$imageData[2];
      switch ($this->imageType) {
        case IMAGETYPE_GIF:
          $this->imageHandle=imagecreatefromgif($imgpath);
          $this->imageExtension='gif';
          break;
        case IMAGETYPE_PNG:
          $this->imageHandle=imagecreatefrompng($imgpath);
          $this->imageExtension='png';
          break;
        case IMAGETYPE_JPEG:
          $this->imageHandle=imagecreatefromjpeg($imgpath);
          $this->imageExtension='jpeg';
          break;
        case IMAGETYPE_BMP:
          $this->imageHandle=imagecreatefrombmp($imgpath);
          $this->imageExtension='bmp';
          break;
        default: throw new Exception('Unknown image format!');
      }
      $this->originalPath=$imgpath;
    }
  }
  
  function saveImage($imgpath=false,$type=false) {
    if (!$imgpath) $imgpath=$this->originalPath;
    if (!$type) {
      $ext=strtolower(substr($imgpath, strrpos($imgpath, '.') + 1));
      switch ($ext) {
        case 'jpeg':
        case 'jpg':
          $type=IMAGETYPE_JPEG;
          break;
        case 'bmp':
          $type=IMAGETYPE_BMP;
          break;
        case 'gif':
          $type=IMAGETYPE_GIF;
          break;
        case 'png':
          $type=IMAGETYPE_PNG;
        default:
          $type=IMAGETYPE_JPEG;
      }
    }
    
    switch ($type) {
      case IMAGETYPE_JPEG:
        return imagejpeg($this->imageHandle,$imgpath,$this->jpegQuality);
        break;
      case IMAGETYPE_GIF:
        return imagegif($this->imageHandle,$imgpath);
        break;
      case IMAGETYPE_PNG:
        return imagepng($this->imageHandle,$imgpath);
        break;
      case IMAGETYPE_BMP:
        return imagebmp($this->imageHandle,$imgpath);
        break;
      default:
        return imagejpeg($this->imageHandle,$imgpath);
    }
  }
  
  function resizeImage($maxwidth,$maxheight,$preserveAspect=true) {
  //function resizes an image
  //it doesn't enlarge the image
    $width=imagesx($this->imageHandle);
    $height=imagesy($this->imageHandle);
    if ($width>$maxwidth && $height>$maxheight) {
      $oldprop=round($width/$height,2);
      $newprop=round($maxwidth/$maxheight,2);
      $preserveAspectx=round($width/$maxwidth,2);
      $preserveAspecty=round($height/$maxheight,2);
      
      if ($preserveAspect)
      {
          if ($preserveAspectx<$preserveAspecty)
          {
              $newwidth=$width/($height/$maxheight);
              $newheight=$maxheight;
          }
          else 
          {
              $newwidth=$maxwidth;
              $newheight=$height/($width/$maxwidth);
          }

          $dest=imagecreatetruecolor($newwidth,$newheight);
          if (imagecopyresampled($dest,$this->imageHandle,0,0,0,0,$newwidth,$newheight,$width,$height)==false) throw new Exception('Couldn\'t resize image!');
      }
      else
      {
          $dest=imagecreatetruecolor($maxwidth,$maxheight);
          if (imagecopyresampled($dest,$this->imageHandle,0,0,0,0,$maxwidth,$maxheight,$width,$height)==false) throw new Exception('Couldn\'t resize image!') ;
      }
      $this->imageHandle=$dest;
  }
}

  function outputImage() {
    //function outputs all the headers and image data
   // var_dump($this);
    header('Content-type: '.image_type_to_mime_type($this->imageType));
    switch ($this->imageType) {
      case IMAGETYPE_GIF:
        return imagegif($this->imageHandle);
        break;
      case IMAGETYPE_JPEG:
        return imagejpeg($this->imageHandle,'',$this->jpegQuality);
        break;
      case IMAGETYPE_BMP:
        return imagebmp($this->imageHandle);
        break;
      case IMAGETYPE_PNG:
        return imagepng($this->imageHandle);
        break;
    }
  }
  }
  /*
  Usage example:
  try {
    $img= new Image('C:\logo4.jpg');
    $img->resizeImage(50,30);
    $img->outputImage();
  } catch ( Exception $e) {
    echo $e;
  }
  */
?>
Topics:

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}