Am sa va prezint o functie simpla pentru uploadarea si redimensionarea imaginilor cu php.


function upload($file, $name, $w=0, $h=0){

    $error='';

    $oldname=$file["name"];

    $uploadedfile=$file["tmp_name"];

    $x=explode(".", $oldname);

    $extension=strtolower($x[count($x)-1]);


    switch($extension){

       case 'jpg': case'jpeg': $src = imagecreatefromjpeg($uploadedfile); break;

       case 'png': $src = imagecreatefrompng($uploadedfile); break;

       case 'gif': $src = imagecreatefromgif($uploadedfile); break;

       default: $error='Poza trebuie sa fie JPG, PNG sau GIF!'; break;

    }


    if($error==''){

       list($width,$height)=getimagesize($uploadedfile);


       if($w==0) $w=$width;

       if($h==0) $h=$height;


       $tmp=imagecreatetruecolor($w, $h);

       imagecopyresampled($tmp, $src, 0, 0, 0, 0, $w, $h, $width, $height);


       imagejpeg($tmp,$name.".jpg",100);


       imagedestroy($src);

       imagedestroy($tmp);

    }


    return $error;

} 

Functia preia parametrii:

upload($file, $name, $w, $h)

-> $file:

Reprezinta o variabila de tip $_FILES["nume_input_file"];

-> $name 

Reprezinta locatia unde va fi stocata poza si numele ei, spre exemplu: "poze/nume_nou" (fara .jpg, deoarece se pune automat)

-> $w (default este 0, adica pastreaza marimea originala a pozei)

Reprezinta valorea in pixeli a latimii noi.

-> $h (default este 0, adica pastreaza marimea originala a pozei)

Reprezinta valoarea in pixeli a inaltimii noi.

$file si $name sunt obligatorii, $w si $h nu sunt, avand ca valoare default 0.

Functia returneaza ''(un string gol) daca imaginea a fost uploadata cu succes, iar altfel returneaza eroarea.

Un exemplu concret aveti aici:


<?php

if(!isset($_GET['a'])) $_GET['a']='';

switch($_GET['a']){

    case '':

?>

    <form action="?a=upload" method="post" enctype="multipart/form-data">

       Poza: <input type="file" name="img" />

       <input type="submit" value="upload" />

    </form>

<?php

    break;

    case 'upload':

       $nume='Bidi';

       $w=$h=100;

       $poza=$_FILES['img'];

       if(($error=upload($poza, "poze/".$nume, $w, $h))=='')

          echo 'este ok';

       else

          echo $error;

    break;

}

/* function for upload */

/* upload($_FILES["input_name"], "where_to_put/the_photo", 100, 100); */

/* to keep the image size put 0 on width and height */

function upload($file, $name, $w=0, $h=0){

    $error='';

    $oldname=$file["name"];

    $uploadedfile=$file["tmp_name"];

    $x=explode(".", $oldname);

    $extension=strtolower($x[count($x)-1]);


    switch($extension){

       case 'jpg': case'jpeg': $src = imagecreatefromjpeg($uploadedfile); break;

       case 'png': $src = imagecreatefrompng($uploadedfile); break;

       case 'gif': $src = imagecreatefromgif($uploadedfile); break;

       default: $error='Poza trebuie sa fie JPG, PNG sau GIF!'; break;

    }


    if($error==''){

       list($width,$height)=getimagesize($uploadedfile);


       if($w==0) $w=$width;

       if($h==0) $h=$height;


       $tmp=imagecreatetruecolor($w, $h);

       imagecopyresampled($tmp, $src, 0, 0, 0, 0, $w, $h, $width, $height);


       imagejpeg($tmp,$name.".jpg",100);


       imagedestroy($src);

       imagedestroy($tmp);

    }


    return $error;

}

?>