November 9 2016

Image Resizer in PHP

Create Image Resizer in PHP

<?php
/**
 * Credits: Bit Repository
 * Source URL: http://www.bitrepository.com/resize-an-image-keeping-its-aspect-ratio-using-php-and-gd.html
 */
class Resize_Image {
    var $image_to_resize;
    var $new_width;
    var $new_height;
    var $ratio;
    var $new_image_name;
    var $save_folder;
    function resize() {
        $info = GetImageSize($this->image_to_resize);
        if(empty($info)) {
            exit("The file ".$this->image_to_resize." doesn't seem to be an image.");
        }
        $width = $info[0];
        $height = $info[1];
        $mime = $info['mime'];
        /*
            Keep Aspect Ratio?
        */
        if($this->ratio) {
            // if preserving the ratio, only new width or new height
            // is used in the computation. if both
            // are set, use width
            if (isset($this->new_width)) {
                $factor = (float)$this->new_width / (float)$width;
                $this->new_height = $factor * $height;
            } else if (isset($this->new_height)) {
                $factor = (float)$this->new_height / (float)$height;
                $this->new_width = $factor * $width;
            } else {
                exit("neither new height or new width has been set");
            }
        }
        // Get image type
        $type = substr(strrchr($mime, '/'), 1);
        switch ($type) {
            case 'jpeg':
                $image_create_func = 'ImageCreateFromJPEG';
                $image_save_func = 'ImageJPEG';
                $new_image_ext = 'jpg';
                break;
            case 'png':
                $image_create_func = 'ImageCreateFromPNG';
                $image_save_func = 'ImagePNG';
                $new_image_ext = 'png';
                break;
            case 'bmp':
                $image_create_func = 'ImageCreateFromBMP';
                $image_save_func = 'ImageBMP';
                $new_image_ext = 'bmp';
                break;
            case 'gif':
                $image_create_func = 'ImageCreateFromGIF';
                $image_save_func = 'ImageGIF';
                $new_image_ext = 'gif';
                break;
            case 'vnd.wap.wbmp':
                $image_create_func = 'ImageCreateFromWBMP';
                $image_save_func = 'ImageWBMP';
                $new_image_ext = 'bmp';
                break;
            case 'xbm':
                $image_create_func = 'ImageCreateFromXBM';
                $image_save_func = 'ImageXBM';
                $new_image_ext = 'xbm';
                break;
            default:
                $image_create_func = 'ImageCreateFromJPEG';
                $image_save_func = 'ImageJPEG';
                $new_image_ext = 'jpg';
        }
        // New Image
        $image_c = ImageCreateTrueColor($this->new_width, $this->new_height);
        $new_image = $image_create_func($this->image_to_resize);
        ImageCopyResampled($image_c, $new_image, 0, 0, 0, 0, 
                           $this->new_width, $this->new_height, 
                           $width, $height);
        if($this->save_folder) {
            if($this->new_image_name) {
                $new_name = $this->new_image_name.'.'.$new_image_ext;
            } else {
                $new_name = basename($this->image_to_resize);
                $new_name = $this->new_thumb_name($new_name).'_resized.'.$new_image_ext;
            }
            $save_path = $this->save_folder.$new_name;
        } else {
            /* Show the image without saving it to a folder */
            header("Content-Type: ".$mime);
            $image_save_func($image_c);
            $save_path = '';
        }
        $process = $image_save_func($image_c, $save_path);
        return array('result' => $process, 'new_file_path' => $save_path);
    }
    function new_thumb_name($filename) {
        $string = trim($filename);
        $string = strtolower($string);
        $string = trim(ereg_replace("[^ A-Za-z0-9_]", " ", $string));
        $string = ereg_replace("[ tnr]+", "_", $string);
        $string = str_replace(" ", '_', $string);
        $string = ereg_replace("[ _]+", "_", $string);
        return $string;
    }
}
?>