Codice PHP:
	
if (!empty($this->data)) {
                    
                    $size = $_FILES['data']['size']['Image']['photo'];
                    
                    if ($size <= 4000000) {
                    
                        $imageName = $this->Image->upload_image_and_thumbnail($this->data,"photo",600,150,"thumb",true);
                        $image['Photo']['name'] = $imageName;
                        $image['Photo']['house_id'] = $id;
                        $this->User->House->Photo->save($image);
                        
                        if($imageName)
                            $this->Session->setFlash('Immagine Caricata!');
                        else
                            $this->Session->setFlash('Carica un file immagine: jpg, gif, png, tif!');
                    }
                    else
                        $this->Session->setFlash('Carica un file immagine inferiore a 4 MB!');
                } 
 
	Codice PHP:
	
<?php
class ImageComponent extends Object
{
        function upload_image_and_thumbnail($data, $datakey, $imgscale, $thumbscale, $folderName, $square) {
        if (strlen($data['Image'][$datakey]['name'])>4){ 
                    $error = 0;
                    $tempuploaddir = realpath("../../app/webroot/img/temp");
                    $biguploaddir = realpath("../../app/webroot/img/").'/'.$folderName."/big";
                    $smalluploaddir = realpath("../../app/webroot/img/").'/'.$folderName."/small";
                    
                    // Make sure the required directories exist, and create them if necessary
                    if(!is_dir($tempuploaddir)) mkdir($tempuploaddir,true);
                    if(!is_dir($biguploaddir)) mkdir($biguploaddir,true);
                    if(!is_dir($smalluploaddir)) mkdir($smalluploaddir,true);
                    
                    $filetype = $this->getFileExtension($data['Image'][$datakey]['name']);
                    $filetype = strtolower($filetype);
 
                    if (($filetype != "jpeg")  && ($filetype != "jpg") && ($filetype != "gif") && ($filetype != "png") && ($filetype != "tif"))
                    {
                        // verify the extension
                        return;
                    }
                    
                    # convert type
                    
                    if ($filetype == "tif") {
                        
                        $flagtif = true;
                    } else {
                        $flagtif = false;
                    }
                    
                    # -------
                    
                    #$imgsize = GetImageSize($data['Image'][$datakey]['tmp_name']);
                    
                    // Generate a unique name for the image (from the timestamp)
                    $id_unic = str_replace(".", "", strtotime ("now"));
                    $filename = $id_unic;
                      
                    settype($filename,"string");
                    $filename.= ".";
                    $filename.=$filetype;
                    $tempfile = $tempuploaddir . "/$filename";
                    $resizedfile = $biguploaddir . "/$filename";
                    $croppedfile = $smalluploaddir . "/$filename";
                    
                    # convert tif in jpg
                            
                    if ($flagtif) {
                        
                        if (is_uploaded_file($data['Image'][$datakey]['tmp_name'])) {
                            
                            if (copy($data['Image'][$datakey]['tmp_name'],"$tempfile")) {
                                $newName = preg_replace('#\.tif$#', '.jpg', $filename);
                                require 'phmagick/phmagick.php';
                                $p = new phmagick($tempfile, $tempuploaddir."/".$newName);
                                $p->debug=true;
                                $p->convert();
                                unlink($tempuploaddir."/".$filename);
                                $filename = $newName;
                                $tempfile = $tempuploaddir."/".$filename;
                                $resizedfile = $biguploaddir . "/$filename";
                                $croppedfile = $smalluploaddir . "/$filename";
                                
                            }
                        }
                                            
                    } else {
                    
                        if (is_uploaded_file($data['Image'][$datakey]['tmp_name']))
                        {                    
                            // Copy the image into the temporary directory
                            if (!copy($data['Image'][$datakey]['tmp_name'],"$tempfile"))
                            {
                                print "Error Uploading File!.";
                                exit(); 
                            }
                     
                        }    
                    }        
                                    
                            /*
                             *    Generate the big version of the image with max of $imgscale in either directions
                             */
                             
                            $this->resize_img($tempfile, $imgscale, $resizedfile);                            
                            
                            if($square) {
                                /*
                                 *    Generate the small square version of the image with scale of $thumbscale
                                 */
                                $this->crop_img($tempfile, $thumbscale, $croppedfile);
                            }
                            else {
                                /*
                                 *    Generate the big version of the image with max of $imgscale in either directions
                                 */
                                $this->resize_img($tempfile, $thumbscale, $croppedfile);
                            }
                            
                            // Delete the temporary image
                            unlink($tempfile);
                   
 
                     // Image uploaded, return the file name
                     return $filename;   
        }
    }
    
    function delete_image($filename,$folderName) {
        unlink("../../app/webroot/img/".$folderName."/big/".$filename);
        unlink("../../app/webroot/img/".$folderName."/small/".$filename);
    }
    
    function crop_img($imgname, $scale, $filename) {    
        $filetype = $this->getFileExtension($imgname);
        $filetype = strtolower($filetype);
              
        switch($filetype){
            case "jpeg":
            case "jpg":
              $img_src = ImageCreateFromjpeg ($imgname);
             break;
             case "gif":
              $img_src = imagecreatefromgif ($imgname);
             break;
             case "png":
              $img_src = imagecreatefrompng ($imgname);
             break;
        }
        
        $width = imagesx($img_src);
        $height = imagesy($img_src);
        $ratiox = $width / $height * $scale;
        $ratioy = $height / $width * $scale;
         
        //-- Calculate resampling
        $newheight = ($width <= $height) ? $ratioy : $scale;
        $newwidth = ($width <= $height) ? $scale : $ratiox;
        
        //-- Calculate cropping (division by zero)
        $cropx = ($newwidth - $scale != 0) ? ($newwidth - $scale) / 2 : 0;
        $cropy = ($newheight - $scale != 0) ? ($newheight - $scale) / 2 : 0;
        
        //-- Setup Resample & Crop buffers
        $resampled = imagecreatetruecolor($newwidth, $newheight);
        $cropped = imagecreatetruecolor($scale, $scale);
        
        //-- Resample
        imagecopyresampled($resampled, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
        //-- Crop
        imagecopy($cropped, $resampled, 0, 0, $cropx, $cropy, $newwidth, $newheight);
        // Save the cropped image
        switch($filetype)
        {
            case "jpeg":
            case "jpg":
             imagejpeg($cropped,$filename,70);
             break;
             case "gif":
             imagegif($cropped,$filename,70);
             break;
             case "png":
             imagepng($cropped,$filename,9);
             break;
        }
    }
    
    function resize_img($imgname, $size, $filename)    {
        $filetype = $this->getFileExtension($imgname);
        $filetype = strtolower($filetype);
        switch($filetype) {
            case "jpeg":
            case "jpg":
            $img_src = ImageCreateFromjpeg ($imgname);
            break;
            case "gif":
            $img_src = imagecreatefromgif ($imgname);
            break;
            case "png":
            $img_src = imagecreatefrompng ($imgname);
            break;
        }
        
        $true_width = imagesx($img_src);
        $true_height = imagesy($img_src);
        if ($true_width>=$true_height)
        {
            $width=$size;
            $height = ($width/$true_width)*$true_height;
        }
        else
        {
            $width=$size;
            $height = ($width/$true_width)*$true_height;
        }
        $img_des = ImageCreateTrueColor($width,$height);
        imagecopyresampled ($img_des, $img_src, 0, 0, 0, 0, $width, $height, $true_width, $true_height);
        // Save the resized image
        switch($filetype)
        {
            case "jpeg":
            case "jpg":
             imagejpeg($img_des,$filename,70);
             break;
             case "gif":
             imagegif($img_des,$filename,70);
             break;
             case "png":
             imagepng($img_des,$filename,9);
             break;
        }
    }
 
    function getFileExtension($str) {
 
        $i = strrpos($str,".");
        if (!$i) { return ""; }
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
    }
} ?>