ho testato questa funzione in locale aprendo un file img da una dir e funziona.
codice:
//CREO LA THUMBNAIL
function makeThumbnail($o_file, $t_ht = 100) {
$image_info = getimagesize($o_file) ; // see EXIF for faster way
switch ($image_info['mime']) {
case 'image/gif':
if (imagetypes() & IMG_GIF) { // not the same as IMAGETYPE
$o_im = imagecreatefromgif($o_file) ;
} else {
$ermsg = 'GIF images are not supported
';
}
break;
case 'image/jpeg':
if (imagetypes() & IMG_JPG) {
$o_im = imagecreatefromjpeg($o_file) ;
} else {
$ermsg = 'JPEG images are not supported
';
}
break;
case 'image/png':
if (imagetypes() & IMG_PNG) {
$o_im = imagecreatefrompng($o_file) ;
} else {
$ermsg = 'PNG images are not supported
';
}
break;
case 'image/wbmp':
if (imagetypes() & IMG_WBMP) {
$o_im = imagecreatefromwbmp($o_file) ;
} else {
$ermsg = 'WBMP images are not supported
';
}
break;
default:
$ermsg = $image_info['mime'].' images are not supported
';
break;
}
if (!isset($ermsg)) {
$o_wd = imagesx($o_im) ;
$o_ht = imagesy($o_im) ;
// thumbnail width = target * original width / original height
$t_wd = round($o_wd * $t_ht / $o_ht) ;
$t_im = imagecreatetruecolor($t_wd,$t_ht);
imagecopyresampled($t_im, $o_im, 0, 0, 0, 0, $t_wd, $t_ht, $o_wd, $o_ht);
imagejpeg($t_im);
imagedestroy($o_im);
imagedestroy($t_im);
}
return isset($ermsg)?$ermsg:NULL;
}
makeThumbnail($filename, 100);
Il problema è che vorrei che salvasse le thumb generate dalla lettura della dir in una variabile, in modo da poterle inserire nel db, o utilizzarle successivamente, ma, purtoppo non capisco come modificare la funzione affinchè faccia questo.
Sono certa che si tratta di una cavolata, ma non ho ancora capito bene come agiscono queste funzioni imagecopyresampled & co messe lì senza alcuna variabile.... Ho già letto il manuale, ma non vengono mai racchiuse in var perchè?
Potreste aiutarmi?
Un'altra cosa. Pensate sia più opportuno salvare direttamente la miniatura nel db o generarla automaticamente quando nessessario? Forse, se non richiedesse troppo tempo al server la seconda ipotesi sembrerebbe la migliore.
Grazie.