Salve
vi faccio vedere una mia funzione (mia si fa per dire... l'ho scopiazzata e riadattata).
Il problema: se ridimensiono immagini .png (trasparenti magari) mi ci inserisce uno sfondo nero.Codice PHP:function make_thumb($img_name, $filename, $new_w, $new_h)
{
// flag per decidere se l'immagine è stata ridimensionata o no
$resized = true;
// ricavo l'estensione
$ext = getExtension($img_name);
// creo la nuova immagine tramite la GCD Library - solo GIF, JPG e PNG
if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext))
$src_img = imagecreatefromjpeg($img_name);
if(!strcmp("png",$ext))
$src_img = imagecreatefrompng($img_name);
if(!strcmp("gif",$ext))
$src_img = imagecreatefromgif($img_name);
// ricavo le dimensioni dell'immagine
$old_x = imagesx($src_img);
$old_y = imagesy($src_img);
if($old_x<=$new_w && $old_y<=$new_h)
{
$resized=false;
}
else
{
$ratio1 = $old_x/$new_w;
$ratio2 = $old_y/$new_h;
if($ratio1>$ratio2)
{
$thumb_w = $new_w;
$thumb_h = $old_y/$ratio1;
}
else
{
$thumb_w = $old_x/$ratio2;
$thumb_h = $new_h;
}
$dst_img = ImageCreateTrueColor($thumb_w, $thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w, $thumb_h,$old_x, $old_y);
}
if($resized)
{
if(!strcmp("png","$ext"))
imagepng($dst_img,$filename);
if(!strcmp("gif","$ext"))
imagegif($dst_img,$filename);
if(!strcmp("jpg","$ext") || !strcmp("jpeg","$ext"))
imagejpeg($dst_img,$filename);
imagedestroy($src_img);
imagedestroy($dst_img);
}
else
{
if(!strcmp("png","$ext"))
imagepng($src_img,$filename);
if(!strcmp("gif","$ext"))
imagegif($src_img,$filename);
if(!strcmp("jpg","$ext") || !strcmp("jpeg","$ext"))
imagejpeg($src_img,$filename);
imagedestroy($src_img);
}
}
Immagino ci sia un qualche parametro di una qualche funzione che dice "sfondo bianco".. ma non saprei dove..
idee brillanti ben accette!![]()

Rispondi quotando