ho visto ma la cosa sembra abbastanza complessa (almeno per me).
Io dovrei prima ridimensionare l'immagine in ogni caso in quanto potrebbe verificarsi il caso che l'immagine è più corta delle dimensioni minime ma più larga della massima consentita, e in questo caso devo comunque ridimensionare per rispettare le proporzioni.
Poi "incollare" l'immagine, ottenuta dal ridimensionamento, sullo sfondo nero per ripsttare le esigenza di output della galleria.
Non so se sono stato chiaro.
Per il momento ho preso solo il caso del ridimensionamento se l'immagine è troppo grande:
ho questa funzione che viene richiamata per il ridimensionamento:
Codice PHP:
<?php
function makeresize($dir,$pic,$n,$t){
@list($width, $height, $type, $attr) = @getimagesize($pic);
$max_w = 500;
$max_h = 300;
$ratio = @min($max_w/$width,$max_h/$height);
// Verifico che l'immagine originale sia più grande delle dimensioni massime 100*100pxl
if ($ratio < 1){
// Individuo le nuove dimensioni da assegnare all'immagine
$w = @floor($ratio*$width);
$h = @floor($ratio*$height);
// creo una nuova immagine con le dimensioni appena calcolate
$thumb = @imagecreatetruecolor($w,$h);
if ($t == 'image/jpeg'){$temp = @imagecreatefromjpeg($pic);}
elseif ($t == 'image/gif'){$temp = @imagecreatefromgif($pic);}
elseif ($t == 'image/png'){$temp = @imagecreatefrompng($pic);}
// ridimensiono l'originale e salvo nella cartella di destinazione
@imagecopyresampled($thumb,$temp,0,0,0,0,$w,$h,$width,$height);
if ($t == 'image/jpeg'){@imagejpeg($thumb,"$dir/".$n, 100);}
elseif ($t == 'image/gif'){@imagegif($thumb,"$dir/".$n, 100);}
elseif ($t == 'image/png'){@imagepng($thumb,"$dir/".$n, 100);}
}
}
?>
il codice della pagina che la richiama è questo:
Codice PHP:
// Creo una array con i formati accettati
$tipi_consentiti = array("image/gif","image/jpeg","image/png","image/pjpeg");
// recupero i dati dal form
$titolo = @addslashes($_POST['titolo']);
$descrizione = @addslashes($_POST['descrizione']);
$nome = @addslashes($_FILES['imagefile']['name']);
$path = $carfoto_user . stripslashes($nome);
$tipo = @addslashes($_FILES['imagefile']['type']);
............
// verifico che il formato del file sia tra quelli accettati
if ((@in_array($_FILES['imagefile']['type'], $tipi_consentiti))&& ($_FILES["imagefile"]["size"] < 2200000)){
// copio il file nella cartella delle immagini
@copy ($_FILES['imagefile']['tmp_name'], $carfoto_user . $nome);
$nomenew = $t."_".$nome;
// creo ridimensionamento
@makeresize($carfoto_user,$path,$nomenew,$tipo);
// creo la miniatura
@makeThumb($carthumb_user,$path,$nomenew,$tipo);
unlink($carfoto_user.$nome);
makeresize e makeThumb sono in pratica la stessa funzione; sono solo modificate le impostazioni di
ridimensionamento.
Chi mi può aiutare?
Grazie