ImageComponent::GenerateThumbFile PHP Méthode

GenerateThumbFile() public méthode

public GenerateThumbFile ( $from_name1, $to_name, $max_x, $max_y, $filename )
    function GenerateThumbFile($from_name1, $to_name, $max_x, $max_y, $filename)
    {
        // if src is URL then download file first
        if (defined('USE_S3') && USE_S3 && $filename != 'user.png') {
            $from_name = $this->generateTemporaryURL($from_name1);
            //print_r($from_name);exit;
        } else {
            $from_name = $from_name1;
        }
        //print $from_name;
        //if(file_exists('/var/www/html/osforsale/files/photos/a9f0ecc01f8ddcbe5b782e04e52694ff.jpg')){
        // print 'jjjjjjjjjjjjjjj';exit;
        //}
        //exit;
        $temp = false;
        $file_mime = false;
        if (substr($from_name, 0, 7) == 'https://') {
            $tmpfname = tempnam("tmp/", "TmP-");
            $temp = @fopen($tmpfname, "w");
            if ($temp) {
                @fwrite($temp, @file_get_contents($from_name)) or die("Cannot download image");
                @fclose($temp);
                $from_name = $tmpfname;
            } else {
                die("Cannot create temp file");
            }
        }
        // check if file exists
        if (defined('USE_S3') && USE_S3 && $filename != 'user.png') {
            $s3 = new S3(awsAccessKey, awsSecretKey);
            $info = $s3->getObjectInfo(BUCKET_NAME, DIR_USER_PHOTOS_S3_FOLDER . $filename);
            //print_r($info);
            $file_mime = $info['type'];
        } else {
            if (file_exists($from_name)) {
                $info = 1;
            } else {
                if (file_exists(DIR_USER_PHOTOS . 'user.png')) {
                    $from_name = DIR_USER_PHOTOS . 'user.png';
                    $info = 1;
                }
            }
        }
        if ($info) {
            // get source image size (width/height/type)
            // orig_img_type 1 = GIF, 2 = JPG, 3 = PNG
            $getimagesize = @getimagesize($from_name);
            //list($orig_x, $orig_y, $orig_img_type, $img_sizes) = @getimagesize($from_name);
            $orig_x = $getimagesize[0];
            $orig_y = $getimagesize[1];
            $orig_img_type = $getimagesize['2'];
            if (!@$file_mime) {
                $file_mime = $getimagesize['mime'];
            }
            // cut image if specified by user
            if ($this->cut_x > 0) {
                $orig_x = min($this->cut_x, $orig_x);
            }
            if ($this->cut_y > 0) {
                $orig_y = min($this->cut_y, $orig_y);
            }
            // should we override thumb image type?
            $this->image_type = $this->image_type != -1 ? $this->image_type : $orig_img_type;
            // check for allowed image types
            if ($orig_img_type < 1 or $orig_img_type > 3) {
                die("Image type not supported");
            }
            if ($orig_x > $max_x or $orig_y > $max_y) {
                if (!@$file_mime) {
                    $file_mime = @finfo_file(finfo_open(FILEINFO_MIME_TYPE), $from_name);
                }
                if ($file_mime) {
                    header("Content-Type:{$file_mime}");
                }
                // resize
                $per_x = $orig_x / $max_x;
                $per_y = $orig_y / $max_y;
                if ($per_y > $per_x) {
                    $max_x = $orig_x / $per_y;
                } else {
                    $max_y = $orig_y / $per_x;
                }
            } else {
                if ($orig_x < $max_x or $orig_y < $max_y) {
                    $max_x = $orig_x;
                    $max_y = $orig_y;
                    if (!@$file_mime) {
                        $file_mime = @finfo_file(finfo_open(FILEINFO_MIME_TYPE), $from_name);
                    }
                    if ($file_mime) {
                        header("Content-Type:{$file_mime}");
                    }
                } else {
                    // keep original sizes, i.e. just copy
                    if ($this->save_to_file) {
                        @copy($from_name, $to_name);
                    } else {
                        switch ($this->image_type) {
                            case 1:
                                header("Content-type: image/gif");
                                readfile($from_name);
                                break;
                            case 2:
                                header("Content-type: image/jpeg");
                                readfile($from_name);
                                break;
                            case 3:
                                header("Content-type: image/png");
                                readfile($from_name);
                                break;
                        }
                    }
                    return;
                }
            }
            if ($this->image_type == 1) {
                // should use this function for gifs (gifs are palette images)
                $ni = imagecreate($max_x, $max_y);
            } else {
                // Create a new true color image
                $ni = ImageCreateTrueColor($max_x, $max_y);
            }
            // Fill image with white background (255,255,255)
            $white = imagecolorallocate($ni, 255, 255, 255);
            /* if($this->image_type == 3)
                {
                $white = imagecolorallocate($ni, 0, 0, 0);
                imagecolortransparent($ni, $white);
                }
               */
            imagefilledrectangle($ni, 0, 0, $max_x, $max_y, $white);
            // Create a new image from source file
            $im = $this->ImageCreateFromType($orig_img_type, $from_name);
            // Copy the palette from one image to another
            imagepalettecopy($ni, $im);
            // Copy and resize part of an image with resampling
            imagecopyresampled($ni, $im, 0, 0, 0, 0, $max_x, $max_y, $orig_x, $orig_y);
            // srcW, srcH
            // save thumb file
            $this->SaveImage($ni, $to_name);
            if ($temp) {
                unlink($tmpfname);
                // this removes the file
            }
        } else {
            //File doesn't exists
            echo "Source image does not exist!";
            exit;
        }
    }

Usage Example

Exemple #1
0
function image_thumb()
{
    //$this->autoRender = false;
    $save_to_file = true;
    $image_quality = 100;
    $image_type = -1;
    $max_x = 100;
    $max_y = 100;
    $cut_x = 0;
    $cut_y = 0;
    $images_folder = '';
    $thumbs_folder = '';
    $to_name = '';
    if ($_REQUEST['type'] == "photos") {
        $images_folder = DIR_USER_PHOTOS;
        if (defined('USE_S3') && USE_S3 && urldecode($_REQUEST['file']) != 'user.png') {
            $images_folder = DIR_USER_PHOTOS_S3;
        }
    } elseif ($_REQUEST['type'] == "company") {
        $images_folder = DIR_FILES . 'company/';
        if (defined('USE_S3') && USE_S3) {
            $images_folder = DIR_USER_COMPANY_S3;
        }
    } else {
        $images_folder = DIR_CASE_FILES;
    }
    if (isset($_REQUEST['nocache'])) {
        $save_to_file = intval($_REQUEST['nocache']) == 1;
    }
    if (isset($_REQUEST['file'])) {
        $from_name = urldecode($_REQUEST['file']);
    }
    if (isset($_REQUEST['dest'])) {
        $to_name = urldecode($_REQUEST['dest']);
    }
    if (isset($_REQUEST['quality'])) {
        $image_quality = intval($_REQUEST['quality']);
    }
    if (isset($_REQUEST['t'])) {
        $image_type = intval($_REQUEST['t']);
    }
    if (isset($_REQUEST['sizex'])) {
        $max_x = intval($_REQUEST['sizex']);
    }
    if (isset($_REQUEST['sizey'])) {
        $max_y = intval($_REQUEST['sizey']);
    }
    if (isset($_REQUEST['size'])) {
        $max_x = intval($_REQUEST['size']);
    }
    ini_set('memory_limit', '-1');
    //echo $images_folder.$from_name;//exit;
    //$this->Image->GenerateThumbFile($images_folder.$from_name, $to_name,$max_x,$max_y);
    $image = new ImageComponent();
    //print $images_folder.$from_name.'---'.$to_name.'----'.$max_x.'---'.$max_y.'----'.$from_name;exit;
    $image->GenerateThumbFile($images_folder . $from_name, $to_name, $max_x, $max_y, $from_name);
}