ho un database tipo varchar 255 in cui vengono salvate i nomi delle immagini che stanno nella cartella
l'immagine caricata dall'utente va su 1 cartella, ma va anche in forma rinpicciolita su un'altra cartella
tutto funziona perfettamente tranne per il fatto che spesso ci sono problemi riguardanti le dimensioni delle immagini, per essere sicuri che l'utente possa caricare l'immagine e necessario che sia 800 di altezza x 600 di larghezza e sia in jpg
e possibile modificare il seguente codice per dare la possibilità di inserire immagini anche per esempio 3000pixel x 500 pixel ecc... praticamente con meno limitazioni ???????
Codice PHP:
session_start();
$query = "UPDATE tabella SET foto='" . $_FILES['foto']['name'] . "' WHERE utente ='" . $_SESSION['utente'] . "'";
mysql_query($query);
//percorsi cartelle per il caricamento dei files
$cartella_thumbs = "../public/foto_utente_thumbs/";
$cartella_upload = "../public/foto_utente/";
//la larghezza delle miniature, in pixel
$img_thumb_width = 120;
{
//verifica le dimensioni del file caricato
if($_FILES['foto']['size'] ==0)
{
die('Errore : campo upload nullo');
}
// Ottengo le informazioni sull'immagine
list($width, $height, $type, $attr) = getimagesize($_FILES['foto']['tmp_name']);
// Controllo che le dimensioni (in pixel) non superino 600x800
if (($width < 600) || ($height < 800))
{
die("Dimensioni non corrette");
}
$file_permessi = array("image/pjpeg","image/jpeg");
if(!in_array($_FILES['foto']['type'], $file_permessi))
{
die('Estensione non consentita');
}
// Verifico che sul sul server non esista già un file con lo stesso nome
if (file_exists('../public/foto_utente/'.$_FILES['foto']['name']))
{
die('File esistente sul server: controlla se hai inserito precedentemente questa foto o pure prova a rinominarla.');
}
///////////////////////
//crea la thumbsnail///
//////////////////////
$ThumbWidth = $img_thumb_width;
//crea la nuova immagine
if($_FILES['foto']['size']){
if($_FILES['foto']['type'] == "image/pjpeg" || $_FILES['foto']['type'] == "image/jpeg"){
$new_img = imagecreatefromjpeg($_FILES['foto']['tmp_name']);
}elseif($_FILES['foto']['type'] == "image/x-png" || $_FILES['foto']['type'] == "image/png"){
$new_img = imagecreatefrompng($_FILES['foto']['tmp_name']);
}elseif($_FILES['foto']['type'] == "image/gif"){
$new_img = imagecreatefromgif($_FILES['foto']['tmp_name']);
}
//ottiene larghezza e altezza dell'immagine originale.
list($width, $height) = getimagesize($_FILES['foto']['tmp_name']);
//calcola le proporzioni e ottiene dimensioni thumbsnail
$imgratio=$width/$height;
if ($imgratio>1){
$newwidth = $ThumbWidth;
$newheight = $ThumbWidth/$imgratio;
}else{
$newheight = $ThumbWidth;
$newwidth = $ThumbWidth*$imgratio;
}
//funzione per ridimensionare l'immagine.
if (function_exists(imagecreatetruecolor)){
$resized_img = imagecreatetruecolor($newwidth,$newheight);
}else{
die("Errore: Assicurati che sul tuo server siano installate le GD library");
}
//ridimensionamento
if($_FILES['foto']['type'] == "image/x-png" || $_FILES['foto']['type'] == "image/png"){
imagealphablending($resized_img, false);
}
imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
//salva l'immagine
$nome_file = strtolower($_FILES['foto']['name']);
if($_FILES['foto']['type'] == "image/pjpeg" || $_FILES['foto']['type'] == "image/jpeg"){
imagejpeg ($resized_img,"$cartella_thumbs/$nome_file");
}
elseif($_FILES['foto']['type'] == "image/x-png" || $_FILES['foto']['type'] == "image/png"){
imagesavealpha($resized_img, true);
imagepng ($resized_img,"$cartella_thumbs/$nome_file");
}
elseif($_FILES['foto']['type'] == "image/gif"){
imagegif($resized_img,"$cartella_thumbs/$nome_file");
}
ImageDestroy ($resized_img);
ImageDestroy ($new_img);
}
if(!is_uploaded_file($_FILES['foto']['tmp_name']))
{die('Erroe nel caricamento');
}
move_uploaded_file($_FILES['foto']['tmp_name'],$cartella_upload .$nome_file)
or die('Non posso caricare il file');
echo "L'immagine è stata ridimensionata ed inserita con successo:
<img src=\"$cartella_thumbs/$nome_file\" />
";
}
?>