Codice PHP:
$uploadedfile = $_FILES['immagine']['type']['size'];
$uploadedfile = array("image/gif","image/x-png", "image/png","image/pjpeg","image/jpeg", "image/jpg");
if(!in_array($_FILES['immagine']['type'],$uploadedfile))
{
die("Il file non è di un tipo consentito, sono ammessi solo: " . implode("," , $uploadedfile) . ".");
}
$max_width = "1800";
$max_height = "1800";
$timestamp = time();
$dimensioni = getimagesize($_FILES['immagine']['tmp_name']);
$sMaxHeight = $dimensioni[0];
$sMaxWidth = $dimensioni[1];
if ($sMaxWidth > $max_width || $sMaxHeight > $max_height) {
die ("Errore di Dimisioni" .mysql_error());
exit; }
$sOrigine = "../pro_images/foto/";
$sDestinazione ="../pro_images/thumb/";
list($sOrigine, $sDestinazione, $width, $height) = fnCreaThumbnail($_SERVER['DOCUMENT_ROOT'].$urlimmagine = $sOrigine.time() .'-'. $_FILES['immagine']['name']);
copy($_FILES['immagine']['tmp_name'], $urlimmagine);
$urlimmaginethumb = ($_SERVER['DOCUMENT_ROOT'].$sDestinazione.time() .'-'. $_FILES['immagine']['name']);
copy($_FILES['immagine']['tmp_name'], $urlimmaginethumb);
function fnCreaThumbnail($urlimmagine, $urlimmaginethumb, $sMaxWidth, $sMaxHeight)
{
/*
* Verifica l'esistenza dell'immagine d'origine e, se presente, ne determina
* la tipologia
*/
$sImgInfo = getimagesize($urlimmagine);
switch($sImgInfo[2])
{
case 1: $sType = IMG_GIF; break;
case 2: $sType = IMG_JPG; break;
case 3: $sType = IMG_PNG; break;
case 4: $sType = IMG_WBMP; break;
default: return $urlimmagine; break;
}
switch($sType)
{
case IMG_GIF:
if (!function_exists('imagecreatefromgif')) return $urlimmagine;
$srcImage = imagecreatefromgif($urlimmagine);
break;
case IMG_JPG:
if (!function_exists('imagecreatefromjpeg')) return $urlimmagine;
$srcImage = imagecreatefromjpeg($urlimmagine);
break;
case IMG_PNG:
if (!function_exists('imagecreatefrompng')) return $urlimmagine;
$srcImage = imagecreatefrompng($urlimmagine);
break;
case IMG_WBMP:
if (!function_exists('imagecreatefromwbmp')) return $urlimmagine;
$srcImage = imagecreatefromwbmp($urlimmagine);
break;
default: return $urlimmagine;
}
if($srcImage)
{
/* Recupera la dimensione in pixel dell'immagine d'origine */
$srcWidth = $sImgInfo[0];
$srcHeight = $sImgInfo[1];
/*
* E imposta a zero quelle di destinazione o alla dimensione della
* sorgente se non è limitata
*/
$sNewWidth = ($sMaxWidth == 0 ? $srcWidth : 0);
$sNewHeight = ($sMaxHeight == 0 ? $srcHeight : 0);
/* Calcola il rapporto di proporzione */
$sPropW = $sNewWidth / $srcWidth;
$sPropH = $sNewHeight / $srcHeight;
/*
* Quindi procede al controllo per determinare se una (o entrambe) le
* dimensioni eccedono quelle massime relative.
* Se una sola eccede quella massima relativa questa verrà massimizzata
* nonché, l'altra dimensione, ricalcolata onde mantenere le proporzioni
* corrette.
* Se entrambe le dimensioni eccedono i loro massimi, viene determinato
* quale tra le due è la maggiore e viene ricalcolata l'altra.
*/
if ($sPropW < 1 && $sPropW <= $sPropH)
{
/*
* Vi è limite alla larghezza massima, l'immagine d'origine eccede
* tale limite e quest'ultima è anche la dimensione più grande (o
* eguale) tra larghezza ed altezza.
*/
$sNewWidth = $sMaxWidth;
}
if ($sPropH < 1 && $sPropH <= $sPropW)
{
/*
* Vi è limite all'altezza massima, l'immagine d'origine eccede
* tale limite e quest'ultima è anche la dimensione più grande (o
* eguale) tra larghezza ed altezza.
*/
$sNewHeight = $sMaxHeight;
}
/*
* A questo punto, se una delle due nuove dimensioni è ancora pari a
* zero, significa che quest'ultima deve essere ricalcolata in base
* alla sua antagonista per poter rispettare le proporzioni.
*/
if ($sNewWidth > 0 && $sNewHeight == 0)
{
/* Ricalcola l'altezza */
$sRatioWidth = $srcWidth / $sNewWidth;
$sNewHeight = $srcHeight / $sRatioWidth;
}
if ($sNewHeight > 0 && $sNewWidth == 0)
{
/* Ricalcola la larghezza */
$sRatioHeight = $srcHeight / $sNewHeight;
$sNewWidth = $srcWidth / $sRatioHeight;
}
if ($sNewWidth == 0 && $sNewHeight == 0)
{
$sNewWidth = $srcWidth;
$sNewHeight = $srcHeight;
}
/* Procede quindi alla creazione effettiva della thumbnail */
if (!function_exists("imagecreatetruecolor"))
$sDestImage = imagecreate($sNewWidth, $sNewHeight);
else
$sDestImage = imagecreatetruecolor($sNewWidth, $sNewHeight);
imagecopyresized($sDestImage, $srcImage, 0, 0, 0, 0, $sNewWidth, $sNewHeight, $srcWidth, $srcHeight);
switch($sType)
{
case IMG_GIF: imagegif($sDestImage, $urlimmaginethumb); break;
case IMG_JPG: imagejpeg($sDestImage, $urlimmaginethumb); break;
case IMG_PNG: imagepng($sDestImage, $urlimmaginethumb); break;
case IMG_WBMP: imagewbmp($sDestImage, $urlimmaginethumb); break;
}
/* Libera la memoria */
imagedestroy($srcImage);
imagedestroy($sDestImage);
return $urlimmaginethumb;
}
else
{
return $urlimmagine;
}
}
grazie a tutti