<?php

class Image {
    
    var 
$file;
    var 
$image_width;
    var 
$image_height;
    var 
$width;
    var 
$height;
    var 
$ext;
    var 
$types = array('','gif','jpeg','png','swf');
    var 
$quality 80;
    var 
$top 0;
    var 
$left 0;
    var 
$crop false;
    var 
$type;
    
    function 
Image($name='') {
        
$this->file $name;
        
$info getimagesize($name);
        
$this->image_width $info[0];
        
$this->image_height $info[1];
        
$this->type $this->types[$info[2]];
        
$info pathinfo($name);
        
$this->dir $info['dirname'];
        
$this->name str_replace('.'.$info['extension'], ''$info['basename']);
        
$this->ext $info['extension'];
    }
    
    function 
dir($dir='') {
        if(!
$dir) return $this->dir;
        
$this->dir $dir;
    }
    
    function 
name($name='') {
        if(!
$name) return $this->name;
        
$this->name $name;
    }
    
    function 
width($width='') {
        
$this->width $width;
    }
    
    function 
height($height='') {
        
$this->height $height;
    }
    
    function 
resize($percentage=50) {
        if(
$this->crop) {
            
$this->crop false;
            
$this->width round($this->width*($percentage/100));
            
$this->height round($this->height*($percentage/100));
            
$this->image_width round($this->width/($percentage/100));
            
$this->image_height round($this->height/($percentage/100));
        } else {
            
$this->width round($this->image_width*($percentage/100));
            
$this->height round($this->image_height*($percentage/100));
        }
        
    }
    
    function 
crop($top=0$left=0) {
        
$this->crop true;
        
$this->top $top;
        
$this->left $left;
    }
    
    function 
quality($quality=80) {
        
$this->quality $quality;
    }
    
    function 
show() {
        
$this->save(true);
    }
    
    function 
save($show=false) {

        if(
$show) @header('Content-Type: image/'.$this->type);
        
        if(!
$this->width && !$this->height) {
            
$this->width $this->image_width;
            
$this->height $this->image_height;
        } elseif (
is_numeric($this->width) && empty($this->height)) {
            
$this->height round($this->width/($this->image_width/$this->image_height));
        } elseif (
is_numeric($this->height) && empty($this->width)) {
            
$this->width round($this->height/($this->image_height/$this->image_width));
        } else {
            if(
$this->width<=$this->height) {
                
$height round($this->width/($this->image_width/$this->image_height));
                if(
$height!=$this->height) {
                    
$percentage = ($this->image_height*100)/$height;
                    
$this->image_height round($this->height*($percentage/100));
                }
            } else {
                
$width round($this->height/($this->image_height/$this->image_width));
                if(
$width!=$this->width) {
                    
$percentage = ($this->image_width*100)/$width;
                    
$this->image_width round($this->width*($percentage/100));
                }
            }
        }
        
        if(
$this->crop) {
            
$this->image_width $this->width;
            
$this->image_height $this->height;
        }

        if(
$this->type=='jpeg'$image imagecreatefromjpeg($this->file);
        if(
$this->type=='png'$image imagecreatefrompng($this->file);
        if(
$this->type=='gif'$image imagecreatefromgif($this->file);
        
        
$new_image imagecreatetruecolor($this->width$this->height);
        
imagecopyresampled($new_image$image00$this->top$this->left$this->width$this->height$this->image_width$this->image_height);
        
        
$name $show null$this->dir.DIRECTORY_SEPARATOR.$this->name.'.'.$this->ext;
        if(
$this->type=='jpeg'imagejpeg($new_image$name$this->quality);
        if(
$this->type=='png'imagepng($new_image$name);
        if(
$this->type=='gif'imagegif($new_image$name);
        
        
imagedestroy($image); 
        
imagedestroy($new_image);
        
    }
    
}

?>