Je veux faire ce qui suit en PHP avec GD. ImageMagick est pas une option, malheureusement, mais cela semble être un problème commun qu'il y a être une solution, je ne peux pas sembler le trouver.PHP/GD - fond transparent
Je veux créer un fichier PNG avec un fond transparent. Ensuite, je veux dessiner un rectangle, copier une image dessus et ajouter du texte. Une façon de faire est la suivante:
$image = ImageCreateTrueColor (800, 600);
imagecolortransparent ($image, 0); //0 is pure black, the default fill color
imagerectangle (...);
//code to copy an image
imagettftext ($image, ...);
imagepng ($image);
Cela fonctionne bien, sauf qu'une partie de l'image copiée peut être noir, et/ou le texte peut être noir. Cela devient alors transparent, ce que je ne veux pas .
imagefill ($image, 0,0, 0x7FFF0000);
imagetransparent ($image, 0x7FFF0000);
Le code ci-dessus est quelque chose que j'ai trouvé en ligne, qui le remplit de rouge, puis rend rouge transparent. Encore une fois, tout le rouge dans l'image devient transparent. Je pourrais choisir une couleur qui est peu susceptible de se produire, mais je ne peux pas le garantir.
Y a-t-il quelque chose qui me manque? Cela peut-il être réparé? Merci pour vos réponses!
par défaut imagealphablending true sur de vraies images de couleur si cela ne fait rien différent :) En outre, imagecreatetruecolor crée une image en noir, ce qui explique pourquoi la le premier morceau de code utilise imagecolortransparent (0); – Spinal
Dans ce cas, je ne vois pas votre problème. J'ai testé ce qui précède en dessinant un rectangle noir au centre, et ça fonctionne très bien avec la transparence autour. –
Vraiment? Alors quelque chose est probablement faux avec ma configuration, parce que si j'essaye le code suivant, j'obtiens un rectangle bleu avec du noir l'entourant! image $ = imagecreatetruecolor (800600); imagealphablending ($ image, true); imagefilledrectangle ($ image, 50,50, 750, 550, imagecolorallocate ($ image, 0,0128)); header ('Type de contenu: image/PNG'); imagepng ($ image); – Spinal