PHP: Ridimensionamento Dinamico Di Immagini Jpeg

Ho sviluppato uno script in php che permette il caricamento sul server ed il ridimensionamento dinamico di immagini JPEG. Può essere di aiuto a chi non è in grado di programmarsi questa funzione autonomamente.

Nell’esempio seguente abbiamo 2 files:

  • index.html – il modulo tramite il quale si invia il files
  • upload.php – lo script che riceve i dati del modulo, il file dell’immagine quindi, e che esegue il ridimensionamento

Ecco il codice di index.html

1. <form action="upload.php" method="POST" enctype="multipart/form-data">
2. <input name="immagine" type="file"  />
3. <input type="submit"  />
4. </form>

Di seguito, il codice php del file upload.php che gestisce il ridimensionamento dell’immagine:

0. if ((strstr($_FILES[‘immagine’][‘type’],"jpeg") || strstr($_FILES[‘type’][‘tmp_name’],"jpg"))) {exit; }
1. $path_to_img=$_FILES[‘immagine’][‘tmp_name’];
2. $imagehw = GetImageSize($path_to_img);
3. $final_width=80;
4. $final_height=(80*$imagehw[1])/$imagehw[0];   
5. $dst_img=ImageCreateTrueColor(final_width,$final_height);
6. $src_img=ImageCreateFromJpeg($path_to_img);
7. ImageCopyResampled($dst_img,$src_img,0,0,0,0,$final_width,
   _$final_height,ImageSX($src_img),ImageSY($src_img));
8. ImageJpeg($dst_img,"/path/to/image.jpg",90);

Ecco la spiegazione del codice:

Riga 0. Controllo il mime-type dell’immagine per verificare che sia una Jpeg (altrimenti esco)

Riga 1. Memorizzo in $path_to_img il percorso dell’immagine da ridmensionare, appena caricata

Riga 2. Ne memorizzo le dimensioni iniziali (x e y) nell’array $imagehw 

Riga 3. Fisso la larghezza finale di ridimensionamento

Riga 4. Imposto l’altezza finale in scala

Riga 5. Creo nel buffer di memoria lo spazio per memorizzare l’immagine finale (con la funzione ImageCreateTrueColor)

Riga 6. Mi memorizzo l’immagine JPG da ridimensionare (con la funzione ImageCreateFromJpeg)

Riga 7. Opero il ridimensionamento con la funzione ImageCopyResampled

Riga 8. Salvo l’immagine ridimensionata con percorso e nome specificati nel parameto centrale, con una compressione jpg pari a 90 (ultimo parametro)

Se ti è stato utile potrebbero interessarti anche:

Commenti

  1. prinzart scrive:

    Grazie Daniele per l’ottimo tutorial, l’ho provato, solo che mi da il seguente errore:
    Parse error: syntax error, unexpected T_VARIABLE in /web/htdocs/www.sito.it/home/pann_contr_comune/include_utente_query_ins_scheda.php on line 99

  2. prinzart scrive:

    ecco il codice:

    if ((strstr($_FILES[‘immagine’][‘type’],”jpeg”) || strstr($_FILES[‘type’][‘tmp_name’],”jpg”))) {
    $URL=”scheda.php?pagina=20″;
    header (“Location: “.$URL);
    }

    $path_to_img=$_FILES[‘immagine’][‘tmp_name’];
    $imagehw = GetImageSize($path_to_img);
    $final_width=80;
    $final_height=(80*$imagehw[1])/$imagehw[0];
    $dst_img=ImageCreateTrueColor(final_width,$final_height);
    $src_img=ImageCreateFromJpeg($path_to_img);

    ImageCopyResampled($dst_img,$src_img,0,0,0,0,$final_width,_$final_height,ImageSX($src_img),ImageSY($src_img));
    ImageJpeg($dst_img,”/web/htdocs/www.sito.it/home/pann_contr_comune/images_ana_utenti”,90);

    1. ikaro scrive:

      azz..grazie prinzart. Correggo l’art quanto prima

  3. prinzart scrive:

    non ho capito, ma al posto di questo “/path/to/image.jpg” che ci devo scrivere?

    1. ikaro scrive:

      Il percorso sul server dell’immagine. Attenzione perchè il percorso macchina non è l’URL, ma la posizione all’inteno dell sistema. Se il server è windows dovrebbe essere qualcosa del tipo C:/ecc/ecc/ecc.jpg, se Linux somiglia all’esempio dell’articolo.
      In alternativa pioi impostare il path relativo ma in genere è sconsigliato.

  4. Bresciani_valerio scrive:

    Ma vaffanculo … fai perdere tempo alla gente. non va na sega..

    1. ikaro scrive:

      Impara a programmare, a quel paese ci sono ottimi corsi.

  5. Franco Ramonda scrive:

    $path_to_img=$_FILES[‘images’][‘tmp_name’]; 
    $imagehw = getimagesize($path_to_img);
    $final_width=320;  //// dimensione in larghezza che si vuole ottenere
    $final_height=(320*$imagehw[1])/$imagehw[0];    
    $dst_img=imagecreatetruecolor($final_width,$final_height);
    $src_img=imagecreatefromjpeg($path_to_img); 
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$final_width,$final_height,imagesx($src_img),imagesy($src_img));
    imagejpeg($dst_img,$pagefolder.$_FILES[‘images’][‘tmp_name’],90);  ///pagefolder la cartela dove si vuole mettere