Logo met transparante achtergrond: wit veranderen in kleur
Voor mijn website heb ik een logo in png-formaat. Dit is 1 'kleur', namelijk wit met een transparante achtergrond. Nu wil ik via php het wit veranderen in een andere kleur, maar moet de transparante achtergrond behouden blijven.
Dit is mijn code, maar dit geeft niet het gewenste resultaat:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$logo = '../images/logo.png';
$logoanderekleur = '../images/logoanderekleur.png';
$im = imagecreatefrompng($logo);
$red = imagecolorallocate($im, 255, 0, 0);
imagecolortransparent($im, $red);
imagefill($im, 0, 0, $red, IMG_COLOR_TRANSPARENT);
imagealphablending($im, false);
imagesavealpha($im, true);
imagepng($im, $logoanderekleur);
$logoanderekleur = '../images/logoanderekleur.png';
$im = imagecreatefrompng($logo);
$red = imagecolorallocate($im, 255, 0, 0);
imagecolortransparent($im, $red);
imagefill($im, 0, 0, $red, IMG_COLOR_TRANSPARENT);
imagealphablending($im, false);
imagesavealpha($im, true);
imagepng($im, $logoanderekleur);
Dit is het transparante plaatje, waarvan ik het wit wil veranderen in een andere kleur:
Weet iemand wat ik verkeerd doe/ hoe ik dit moet aanpakken?
Ik heb bij het zoeken gevonden dat er misschien problemen zijn omdat het om wit gaat en dit geen kleur is, ook kan een probleem zijn dat het om meerdere witte vlakken gaat en niet om slechts 1. Ik kom er in ieder geval zelf niet uit.
Gewijzigd op 01/11/2018 12:04:57 door Jo Immanuel
Als je de PNG omzet in SVG, kun je de vulkleur aanpassen met CSS.
Ward van der Put op 01/11/2018 11:02:17:
Als je de PNG omzet in SVG, kun je de vulkleur aanpassen met CSS.
Dat wil ik niet. Ik wil het juist via php doen zodat er een af plaatje met de juiste kleur uitkomt.
Toevoeging op 01/11/2018 17:14:15:
Ok, ik ben eruit. Het heeft allemaal met de kleur wit te maken. Dan kun je er nog zoveel filters overheen gooien, de kleur blijft wit. Dus 'kleuren omdraaien' is de truck.
Oplossing: Wanneer je voor de imagefilter nog een imagefilter met waarde IMG_FILTER_NEGATE plaatst lukt het wel.
Dus:
Code (php)
1
2
3
4
2
3
4
...
imagefilter($logo, IMG_FILTER_NEGATE);
imagefilter($logo, IMG_FILTER_COLORIZE, 0, 0, 225);
...
imagefilter($logo, IMG_FILTER_NEGATE);
imagefilter($logo, IMG_FILTER_COLORIZE, 0, 0, 225);
...
Topic kan gesloten worden!