Autor Zpráva
Fury
Profil *
Zdravím,

používám tento skript na zmenšení obrázku:

function image_resize($file_in, $file_out, $width, $height) {
    $imagesize = getimagesize($file_in);
    if ((!$width && !$height) || !$imagesize[0] || !$imagesize[1]) {
        return false;
    }
    if ($imagesize[0] == $width && $imagesize[1] == $height) {
        return copy($file_in, $file_out);
    }
    switch ($imagesize[2]) {
        case 1: $img = imagecreatefromgif($file_in); break;
        case 2: $img = imagecreatefromjpeg($file_in); break;
        case 3: $img = imagecreatefrompng($file_in); break;
        default: return false;
    }
    if (!$img) {
        return false;
    }
    $img2 = imagecreatetruecolor($width, $height);
    imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);
    if ($imagesize[2] == 2) {
        return imagejpeg($img2, $file_out, 100);
    } elseif ($imagesize[2] == 1 && function_exists("imagegif")) {
        imagetruecolortopalette($img2, false, 256);
        return imagegif($img2, $file_out);
    } else {
        return imagepng($img2, $file_out);
    }
}


Mám však problém pokud uploduji obrázek PNG, upraví se mi pozadí na černé. Dá se nějak udělat, aby byl obrázek průhledný, případně aby měl alespoň bílé pozadí?

Díky moc za pomoc
mimochodec
Profil
Na http://php.net/function.imagecopyresampled hledej "transparency".
Spíš bych ale doporučil použít http://phpthumb.sourceforge.net. Jak ten web vypadá odbytě, ta knihovna je nejschopnější z těch, co jsem zkusil. Hodně toho umí a třeba zmenšeniny jsou mnohem kvalitnější než u konkurence, vč. té funkce, kterou tady používáš ty.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0