View Full Version : [php]modificare la grandezza delle immagini in upload??
TorpedoBlu
01-06-2006, 19:45
vorrei sapere se posso salvare durante l'upload sul server le immagini in grandezze diverse, nel senso che vorrei salvare una versione originale nomeimmagine.jpg e automaticamente una versione del file nominata nomeimmagine_small.jpg con un formato fisso tipo 80x60 da usare come preview nella mia applicazione web.
è possibile?
Certo, devi usare le librerie gd2...che sono solitamente comprese in php...
gaglioppo
02-06-2006, 07:37
io ho usato il codice sotto riportato per limitare la dimensione dei file in upload e per creare le miniature, spero ti sia di aiuto.
$sizelimit = "yes"; //Vuoi imporre un limete massimo di dimensioni?
$sizebytes = "225760"; //dimensioni massime in bytes
$absolute_path = "/qualcosa/qualcosaltro/ecc"; //indirizzo assoluto sul server
$dir = "dir";
if ($file != "")
{
if (file_exists("$absolute_path/$file_name"))
{
die("errore2: Un file con lo stesso nome è già online, RINOMINARLO e inviarlo nuovamente");
}
if (($sizelimit == "yes") && ($file_size > $sizebytes))
{
die("errore3: Il file che stai per caricare è troppo grande. Le dimensioni massime consentite sono di 200Kb");
}
@copy($file, "$absolute_path/$file_name") or die("errore4: Problemi sul server... riprova più tardi o scrivici una email");
echo "File <b>".$file_name."</b> caricato Correttamente";
l//crea la miniatura
$wsize = 100; //larghezza massima e...
$hsize = 100; //altezza massima della thumbnail
$im_size = GetImageSize($file);
$imageWidth = $im_size[0];
$imageHeight = $im_size[1];
$thumb_width = $wsize;
$thumb_height = $hsize;
$im2 = ImageCreateFromJPEG($file);
if ($imageWidth>=$imageHeight)
{
$width = $thumb_width;
$height = ($width/$imageWidth)*$imageHeight;
}
else
{
$height = $thumb_height;
$width = ($height/$imageHeight)*$imageWidth;
}
$im = imageCreateTrueColor($width, $height);
if (function_exists('ImageCopyResampled')) {
ImageCopyResampled($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
} else {
ImageCopyResized($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
}
$nome_file_output=$absolute_path."/miniature/mini_".$file_name;
Header("Content-type: image/jpg");
Imagejpeg($im, $nome_file_output, 85); //85 è la qualità (da 1 a 100)
ImageDestroy($im);
ImageDestroy($im2);
}
else
{
die("errore5: Non hai selezionanto nessun file!!!");
}
approfitto per salutare tutti, in particolare cionci
a presto
approfitto per salutare tutti, in particolare cionci
Un saluto anche a te :)
TorpedoBlu
02-06-2006, 18:36
io ho usato il codice sotto riportato per limitare la dimensione dei file in upload e per creare le miniature, spero ti sia di aiuto.
$sizelimit = "yes"; //Vuoi imporre un limete massimo di dimensioni?
$sizebytes = "225760"; //dimensioni massime in bytes
$absolute_path = "/qualcosa/qualcosaltro/ecc"; //indirizzo assoluto sul server
$dir = "dir";
if ($file != "")
{
if (file_exists("$absolute_path/$file_name"))
{
die("errore2: Un file con lo stesso nome è già online, RINOMINARLO e inviarlo nuovamente");
}
if (($sizelimit == "yes") && ($file_size > $sizebytes))
{
die("errore3: Il file che stai per caricare è troppo grande. Le dimensioni massime consentite sono di 200Kb");
}
@copy($file, "$absolute_path/$file_name") or die("errore4: Problemi sul server... riprova più tardi o scrivici una email");
echo "File <b>".$file_name."</b> caricato Correttamente";
l//crea la miniatura
$wsize = 100; //larghezza massima e...
$hsize = 100; //altezza massima della thumbnail
$im_size = GetImageSize($file);
$imageWidth = $im_size[0];
$imageHeight = $im_size[1];
$thumb_width = $wsize;
$thumb_height = $hsize;
$im2 = ImageCreateFromJPEG($file);
if ($imageWidth>=$imageHeight)
{
$width = $thumb_width;
$height = ($width/$imageWidth)*$imageHeight;
}
else
{
$height = $thumb_height;
$width = ($height/$imageHeight)*$imageWidth;
}
$im = imageCreateTrueColor($width, $height);
if (function_exists('ImageCopyResampled')) {
ImageCopyResampled($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
} else {
ImageCopyResized($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
}
$nome_file_output=$absolute_path."/miniature/mini_".$file_name;
Header("Content-type: image/jpg");
Imagejpeg($im, $nome_file_output, 85); //85 è la qualità (da 1 a 100)
ImageDestroy($im);
ImageDestroy($im2);
}
else
{
die("errore5: Non hai selezionanto nessun file!!!");
}
approfitto per salutare tutti, in particolare cionci
a presto
ehm.... cosa non va?
File prova.jpg caricato Correttamente
Fatal error: Call to undefined function: imagecreatefromjpeg() in
c:\programmi\easyphp1-8\www\testup.php on line 38
Non hai abilitato l'estensione php_gd2.dll
TorpedoBlu
02-06-2006, 20:00
ok perfetto funziona, ma.... unica cosa ho 2 file uno con una form ed il secodo esegue tutto, devo salvare delle locandine... beh praticamente
<?
$sizelimit = "no"; //Vuoi imporre un limete massimo di dimensioni?
$sizebytes = "225760"; //dimensioni massime in bytes
$absolute_path = "./prova"; //indirizzo assoluto sul server
$dir = "dir";
if ($_POST['file'] != "")
{
$mese=$_POST['mese'];
$giorno=$_POST['giorno'];
$file=$_POST['file'];
$file_name ="locandina_".$giorno."_".$mese."_big.jpg";
if (file_exists("$absolute_path/$file_name"))
{
die("errore2: Un file con lo stesso nome è già online, RINOMINARLO e inviarlo nuovamente");
}
if (($sizelimit == "yes") && ($file_size > $sizebytes))
{
die("errore3: Il file che stai per caricare è troppo grande. Le dimensioni massime consentite sono di 200Kb");
}
@copy($file, "$absolute_path/$file_name") or die("errore4: Problemi sul server... riprova più tardi o scrivici una email");
//crea la miniatura
$wsize = 200; //larghezza massima e...
$hsize = 200; //altezza massima della thumbnail
$im_size = GetImageSize($file);
$imageWidth = $im_size[0];
$imageHeight = $im_size[1];
$thumb_width = $wsize;
$thumb_height = $hsize;
$im2 = imagecreatefromjpeg($file);
if ($imageWidth>=$imageHeight)
{
$width = $thumb_width;
$height = ($width/$imageWidth)*$imageHeight;
}
else
{
$height = $thumb_height;
$width = ($height/$imageHeight)*$imageWidth;
}
$im = imageCreateTrueColor($width, $height);
if (function_exists('ImageCopyResampled')) {
ImageCopyResampled($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
} else {
ImageCopyResized($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
}
$nome_file_output="$absolute_path/locandina_".$giorno."_".$mese."_small.jpg";
Header("Content-type: image/jpg");
Imagejpeg($im, $nome_file_output, 85); //85 è la qualità (da 1 a 100)
ImageDestroy($im);
ImageDestroy($im2);
}
else
{
die("errore5: Non hai selezionanto nessun file!!!");
}
?>
praticamente quando invio i dati l'applicazione fa quello che deve fare (salvare il file in 2 formati con 2 nomi diversi) ma mi apre il popup per scaricare un file (il mio file che riceve la form postato sopra) che uol dire?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.