Buona sera ragazzi, sto lavorando ad un gestionale in PHP e ho riscontrato un problema in una funzione che permette la creazione di miniature di foto che vengono caricate.
Mi spiego meglio: attraverso un form procedo alla creazione di un album, i dati vengono controllati e caricati sul server e le foto vengono caricate; fino a qui tutto bene. Siccome però le immagini risultano troppo pesanti da caricare, ho inserito una funzione che mi permette di creare delle miniature delle foto caricate; ed ora arriva il problema: se effettuo questa operazione su immagini JPG il problema non sussiste, le miniature vengono correttamente create, se utilizzo la stessa funzione su immagini in formato PNG si formano "immagini" di 0 byte e non visualizzabili. Accade raramente che si creino immagini tutte nere.
I codici sono i seguenti:
Questo fa riferimento alla funzione per le immagini PNG
Quest, che funziona, a quelle in JPG
Ovviamente le immagini temporanee vengono poi distrutte tramite la funzione "imagedestroy".
Vi ringrazi in anticipo :fonzie:
Mi spiego meglio: attraverso un form procedo alla creazione di un album, i dati vengono controllati e caricati sul server e le foto vengono caricate; fino a qui tutto bene. Siccome però le immagini risultano troppo pesanti da caricare, ho inserito una funzione che mi permette di creare delle miniature delle foto caricate; ed ora arriva il problema: se effettuo questa operazione su immagini JPG il problema non sussiste, le miniature vengono correttamente create, se utilizzo la stessa funzione su immagini in formato PNG si formano "immagini" di 0 byte e non visualizzabili. Accade raramente che si creino immagini tutte nere.
I codici sono i seguenti:
Questo fa riferimento alla funzione per le immagini PNG
PHP:
$extimg=substr($_FILES["photo$p"]["type"], 6, 3);
if($extimg=='png') {
$img2 = imagecreatefrompng($img);
$thumb=ImageCreateTrueColor($nw,$nh);
$wm = $w/$nw;
$hm = $h/$nh;
$h_height = $nh/2;
$w_height = $nw/2;
if($w > $h){
$adjusted_width = $w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;
ImageCopyResampled($thumb,$img2,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
imagePNG($thumb,$thname,95);
}elseif(($w < $h) || ($w == $h)){
$adjusted_height = $h / $wm;
$half_height = $adjusted_height / 2;
$int_height = $half_height - $h_height;
ImageCopyResampled($thumb,$img2,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
ImagePNG($thumb,$thname,95);
}else{
ImageCopyResampled($thumb,$img2,0,0,0,0,$nw,$nh,$w,$h);
ImagePNG($thumb,$thname,95);
}
}
Quest, che funziona, a quelle in JPG
PHP:
else {
$img2 = ImageCreateFromJpeg($img);
$thumb=ImageCreateTrueColor($nw,$nh);
$wm = $w/$nw;
$hm = $h/$nh;
$h_height = $nh/2;
$w_height = $nw/2;
if($w > $h){
$adjusted_width = $w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;
ImageCopyResampled($thumb,$img2,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
ImageJPEG($thumb,$thname,95);
}elseif(($w < $h) || ($w == $h)){
$adjusted_height = $h / $wm;
$half_height = $adjusted_height / 2;
$int_height = $half_height - $h_height;
ImageCopyResampled($thumb,$img2,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
ImageJPEG($thumb,$thname,95);
}else{
ImageCopyResampled($thumb,$img2,0,0,0,0,$nw,$nh,$w,$h);
ImageJPEG($thumb,$thname,95);
}
}
Ovviamente le immagini temporanee vengono poi distrutte tramite la funzione "imagedestroy".
Vi ringrazi in anticipo :fonzie: