• User

    Aiuto/Correzione esercizio

    Salve a tutti,
    è da poco che mi interesso di programmazione in PHP, mi hanno dato questo esercizio da svolgere:

    *sviluppare, in PHP+librerie GD, una funzione di restringimento immagini che, presa in input una immagine (possibili più formati), le dimensioni di output desiderate XxY, un colore di sfondo e un parametro booleano crop, produce in output una immagine di XxY.
    Il restringimento deve, ovviamente, avvenire in proporzione. Se le dimensioni di output XxY non rispettano le stesse proporzioni dell?immagine di input, la funzione calcola il restringimento minimo affinché l?immagine entri in un riquadro di XxY (centrandola), e riempie gli spazi laterali rimasti vuoti con il colore di sfondo, fino a raggiungere le dimensioni XxY.

    Il parametro booleano crop, se attivato, fa si che dall?immagine di input vengano ritagliati eventuali bordi bianchi (o del colore di sfondo) presenti, prima di effettuare il centramento.*

    Ora, premettendo, che il crop non ho idea di come funzioni e come si possa utilizzare, ho creato questa funzione:

    function resizer ($imgurl, $out_w, $out_h, $bkgcol, $crop)
    {
    	$img = "$imgurl";
        $dest = "miniature/";
        $original_size = getimagesize($img);
        $original_w = $original_size['w'];
        $original_h = $original_size['h'];
        $original_proportion = $original_w/$original_h;
        $new_proportion = $out_w/$out_h;
        switch ($original_size['MIME']){
        	case "image/jpg":
            	$im = imagecreatefromjpg($img);
            break;
            
            case "image/gif":
            	$im = imagecreatefromgif($img);
            break;
            
            case "image/png":
            	$im = imagecreatefrompng($img);
            break;
          }
          
        if ($original_propotion=$new_propotion){
        	$miniatura = imagecreate($out_w, $out_h);
            imagecopysized($miniatura, $im, 0,0,0,0, $out_w, $out_h, $original_w, $original_h);
            imagejpg($miniatura, $dest, $90);
            imagedestroy($miniatura);
        } else {
        	$new_w = $out_h * $original_proportion;
            $new_h = $out_h;
            $tempimg = imagecreate($new_w, $new_h);
            $miniatura = imagecolorallocate($tempimg, $bkgcol);
            $dest_x = (out_w - new_w)/2;
            imagecopyresized($miniatura, $im, $dest,x,0,0,0, $out_w, $out_h, $new_w, $new_h);
            imagejpg($miniatura, $dest, 90);
            imagedestroy($miniatura);
        }
      }
    

    Volevo sapere se è giusta, se ho commesso errori (sicuramente) :bho: e come potevo inserire anche il CROP.
    Ringrazio tutti per il prezioso aiuto.