Ciao
Ho questa funzione che viene richiamata per ridimensionare le immagini:
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.
le funzioni e il codice di cui sopra fanno il loro lavoro senza problemi con le immagini gif e jpg ma
c'è un problema che non capisco con le immagini png.
L'immagine originale viene caricata sul server ma poi non viene ridimensionata,
nella cartella di destinazione trovo quindi l'immagine originale png (che avrebbe dovuto essere in un secondo momento eliminata con unlink()) e il nome dell'immagini ridimensionata che invece non c'è.
Ripeto. Il problema esiste solo con le png.
Ho provato sia in locale che sui server altervista...niente lo stesso
Perchè? Il codice di ridimensionamento non va bene per questo tipo di immagini?
Potete aiutarmi?
Grazie