Home PHP Upload di immagini con resizing in PHP
Upload di immagini con resizing in PHP
Programmazione & Co.
Venerdì 28 Ottobre 2011 09:59

Ho già parlato a più riprese di come effettuare l'upload di immagini, ma non avevo mai considerato il resizing.

Quindi vi posto qua uno script che va a integrare quelli precedenti.

In pratica una volta fatto il submit del form vengono effettuate queste operazioni:

  • controllo della dimensione in KB
  • controllo dell'estensione
  • controllo sulle misure della foto

Passati questi controlli la foto viene uplodata e ridimensionata.

Ecco lo script:

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['save'])) { // AL SUBMIT DEL FORM
$maxSize = 819200; //byte => 800
 $acceptType = array(
 'png' => 'image/png',
 'jpeg' => 'image/jpeg',
 'jpg' => 'image/jpeg',
 'gif' => 'image/gif'
 );
 $cartella = "../img_testata/"; // IMPOSTO LA DIRECTORY DI DESTINAZIONE

 if (is_uploaded_file($_FILES['file']['tmp_name'])) {
 list($width, $height, $type, $attr) = getimagesize($_FILES['file']['tmp_name']); // RECUPERO LE INFO SULLE IMMAGINI
 $destinazione = $cartella . "FOTO" . strrchr($_FILES['file']['name'], '.'); // IMPOSTO LA DESTINAZIONE FINALE e il nome
 if ($_FILES['file']['size'] <= $maxSize) { // CONTROLLO LA DIMENSIONE IN KB
 if (in_array($_FILES['file']['type'], $acceptType)) { // CONTROLLO L'ESTENSIONE 
 if (($width > 505) && ($height > 200) && ($width > $height)) { // CONTROLLO LE MISURE
 $thumb = imagecreatetruecolor(505, 200);
 imagecopyresized($thumb, imagecreatefromjpeg($_FILES['file']['tmp_name']), 0, 0, 0, 0, 505, 200, $width, $height);
if (imagejpeg($thumb, $destinazione)) {
echo '<script type="text/javascript">alert("Immagine uplodata: ' . $img . '");</script>';
 } else {
 $img = "Errore nell'upload";
 echo '<script type="text/javascript">alert("' . $img . '");</script>';
 }
 } else {
 $img = "Dimensioni non corrette: larghezza minima 505, altezza minima 200, l'altezza non può superare la larghezza";
 echo '<script type="text/javascript">alert("' . $img . '");</script>';
 }
 } else {
 $img = "Tipo di file non supportato";
 echo '<script type="text/javascript">alert("' . $img . '");</script>';
 }
 } else {
 $img = "File troppo grande";
 echo '<script type="text/javascript">alert("' . $img . '");</script>';
 }
}

Nelle righe

$thumb = imagecreatetruecolor(505, 200);
imagecopyresized($thumb, imagecreatefromjpeg($_FILES['file']['tmp_name']), 0, 0, 0, 0, 505, 200, $width, $height);

ancora non ho creato l'immagine sul disco, ma solo in memoria.

In sostanza ho creato solo una copia dandogli le dimensioni nuove rispetto a quelle vecchie.

L'upload vero e proprio lo faccio sotto, dentro all'if con la funzione

imagejpeg($thumb, $destinazione)

alla quale passo l'immagine caricata in memoria e la destinazione.

Le funzioni che dovete tenere a mente qua sono nell'ordine:

Considerate anche che questo script è facilmente adattabile ad un upload multiplo.

Ultimo aggiornamento Venerdì 28 Ottobre 2011 11:16