Salve sto provando ad usare questa funzione per fare in modo che il ridimensionamento delle immagini caricate sul mio sito sia PROPORZIONALE.
Codice PHP:<?
function fnCreaThumbnail($sOrigine, $sDestinazione, $sMaxWidth=0, $sMaxHeight=0)
{
/*
* Verifica l'esistenza dell'immagine d'origine e, se presente, ne determina
* la tipologia
*/
$sImgInfo = @getimagesize($sOrigine);
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 $sOrigine; break;
}
switch($sType)
{
case IMG_GIF:
if (!function_exists('imagecreatefromgif')) return $sOrigine;
$srcImage = @imagecreatefromgif($sOrigine);
break;
case IMG_JPG:
if (!function_exists('imagecreatefromjpeg')) return $sOrigine;
$srcImage = @imagecreatefromjpeg($sOrigine);
break;
case IMG_PNG:
if (!function_exists('imagecreatefrompng')) return $sOrigine;
$srcImage = @imagecreatefrompng($sOrigine);
break;
case IMG_WBMP:
if (!function_exists('imagecreatefromwbmp')) return $sOrigine;
$srcImage = @imagecreatefromwbmp($sOrigine);
break;
default: return $sOrigine;
}
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, $sDestinazione); break;
case IMG_JPG: @imagejpeg($sDestImage, $sDestinazione); break;
case IMG_PNG: @imagepng($sDestImage, $sDestinazione); break;
case IMG_WBMP: @imagewbmp($sDestImage, $sDestinazione); break;
}
/* Libera la memoria */
@imagedestroy($srcImage);
@imagedestroy($sDestImage);
return $sDestinazione;
}
else
{
return $sOrigine;
}
}
?>
la pagina upload_categoria.php conmtiene il seguente codice attraverso il quale richiamo la funzione impostata nel file gd.php
Il problem rigurada la creazione dell'immagine proporzionata in pratica il resize procede ma le dimensioni proporzionate non le ottengo . dove Sbaglio?Codice PHP:<?
if ((isset($_POST["act"])) AND ($_POST["act"] == "upload") ){
if(isset($_FILES["file"]["size"])){
$id = $_POST["id"];
$file =$_FILES["file"]["name"];
$arr_ext = array("gif","jpg","jpeg");
list($ok_upload,$end_result,$file_name) = uploadFile("../public/servizi/".$id."/foto/",$_FILES["file"],$arr_ext);
if($ok_upload){
include("../include/gd.php");
$origine = "../public/servizi/".$id."/foto/".$file; // percorso al file dell'immagine
$destinazione = "../public/servizi/".$id."/thumb/".$file; // directory di salvataggio delle miniature create
/* Dimensione finale massima: */
$thumb = fnCreaThumbnail($origine, $destinazione, 200,200);
echo "<script>self.location.href='servizi_foto.php?id=".$id."';</script>";
stampa_msg();
}
}
}
?>

Rispondi quotando