php png resizen transparantie behouden.

Status
Niet open voor verdere reacties.

bartjuh_4

Gebruiker
Lid geworden
19 jun 2005
Berichten
225
Hallo,
Voor mijn site systeem heb ik een upload functie zodat gebruikers een avatar kunnen uploaden.
Deze word dan verkleind naar 45X45. Dit werkt prima, maar als ik een transparante png ga gebruiken verschijnen er zwarte randjes om het plaatje heen. Hoe los ik dit op?
voorbeeld:
Bart.png

Groeten,
Bart
 
Welke functies gebruik je voor het verkleinen van die afbeelding?
 
PHP:
function thumbnail($map,$thumblocatie,$bestandsnaam,$breedte,$hoogte)
{
    list($breedte_origineel, $hoogte_origineel, $type) = getimagesize($map.$bestandsnaam);


    //Maak een nieuwe afbeelding aan met de juiste breedte en hoogte, openen de originele en gebruik de functie imagecopyresampled om daar een mooie afbeelding van te maken.
    $afbeelding = imagecreatetruecolor($breedte, $hoogte);

    switch ($type)
    {
        case 1:
            //gif
            $afbeelding_origineel = imagecreatefromgif($map.$bestandsnaam);
            $resized = imagecreatetruecolor($breedte, $hoogte);
            $colorTransparent = imagecolortransparent($afbeelding_origineel);
            imagepalettecopy($afbeelding_origineel, $resized);
            imagefill($resized, 0, 0, $colorTransparent);
            imagecolortransparent($resized, $colorTransparent);
            imagetruecolortopalette($resized, true, 256);
            
            /* making the new image transparent */
	         	$background = imagecolorallocate($afbeelding, 0, 0, 0);
	         	ImageColorTransparent($afbeelding, $background); // make the new temp image all transparent
		        //==end            
            
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            imagegif($afbeelding, $map.$thumblocatie.$bestandsnaam);            
            break;
        case 2:
            //jpg
            $afbeelding_origineel = imagecreatefromjpeg($map.$bestandsnaam);
            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            imagejpeg($afbeelding, $map.$thumblocatie.$bestandsnaam,80);
            break;
        case 3:
            //png
            $afbeelding_origineel = imagecreatefrompng($map.$bestandsnaam);

            /* making the new image transparent */
	         	$background = imagecolorallocate($afbeelding, 0, 0, 0);
	         	ImageColorTransparent($afbeelding, $background); // make the new temp image all transparent
		        //==end

            imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
            imagepng($afbeelding, $map.$thumblocatie.$bestandsnaam);
            break;
    }
}

Dit is een erg brakke code die met moeite werkt, gifs werken helemaal niet png wel alleen de transparantie niet. Zelf ben ik niet bepaald goed op het gebied van GD.
 
Laatst bewerkt:
Heb je het ook al met een transparante GIF geprobeerd?
 
Probeer dit [engels] script anders eens.
 
Status "Opgelost"? ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan