Aller au contenu

Fonction GD et transparence


petit-ourson

Sujets conseillés

Si quelqu'un a un peu utiliser les fonctions GD sous PHP ...

J'essaie de creer une image transparente mais ... Impossible de réussir à gérer cette transparence ;o)

$vImage = imagecreatetruecolor( 100 , 100);
imagesavealpha( $vImage, true );
$bg = imagecolorallocatealpha($vImage, 255, 255, 255, 60);
imagefilledrectangle ($vImage, 0, 0, 100, 100, $bg);
$vTextColor = imagecolorallocate( $vImage, 0, 0, 0 );
imagestring ( $vImage, 10, 0 , 9, "aaaaa", $vTextColor );

header("Content-type: image/png");
Imagepng($vImage);

En modifiant le dernier paramètre de imagecolorallocatealpha() avec les valeurs de 0 a 127, il passe du blanc au noir mais c'est pas trop cela que je cherche. Il devrait passer du blanc au transparent.

Merci d'avance

Modifié par petit-ourson
Lien vers le commentaire
Partager sur d’autres sites

Le problème que tu poses ne vient pas de la lib. GD, mais de IExplorer, qui gère mal (pas du tout, je crois) la transparence des .png.

Essaies de voir avec un autre navigateur, ou changes d'extension.

Lien vers le commentaire
Partager sur d’autres sites

Je suis sous Firefox et l'image ne s'affiche pas bien non plus dans un éditeur d'image.

Cela fonctionne bien si je part d'une ressource produite par un createimagefrompng() mais pas si je pars d'une ressource imagecreatetruecolor().

Lien vers le commentaire
Partager sur d’autres sites

[HS]

Le problème que tu poses ne vient pas de la lib. GD, mais de IExplorer, qui gère mal (pas du tout, je crois) la transparence des .png.

Il les gère juste mal. Il sait gérer une transparence binaire sur les PNG (comme si c'était un gif transparent, en fait) mais foire sur les canaux alpha qui permettent une transparence sur 254 niveaux.

[/HS]

Lien vers le commentaire
Partager sur d’autres sites

[HS]

Il les gère juste mal. Il sait gérer une transparence binaire sur les PNG (comme si c'était un gif transparent, en fait) mais foire sur les canaux alpha qui permettent une transparence sur 254 niveaux.

[/HS]

<{POST_SNAPBACK}>

T'es sur de ton coup ? Je savais que c'etait le cas sous IE, mais je croiyais que le support PNG sous FF etait complet ?

Lien vers le commentaire
Partager sur d’autres sites

  • 6 months later...

Je reprends le fil de cette discussion intéressante.

Effectivement si on passe imagealphablending à false, on peut gérer les transparences correctement.

Par exemple pour obtenir un fond transparent dans une image (imagefill ne fonctionne pas avec des couleurs transparentes utilisant des alpha, en tout cas pas sous PHP 5.0, il semble que sur la dernière version cela est corrigé) :

//$img est une ressource créé à partir de imagecreatetruecolor par ex.
imagealphablending($img,false);
$black = imagecolorallocate($img,0,0,0);
imagefill($img,0,0,$black);
imagecolortransparent($img,$black);
//continuer avec imagettftext(...) pour écrire un texte

Si vous ne mettez pas la ligne imagealphablending false vous aurez aussi un fond transparent mais le bord de l'écriture sera mixé avec du noir (bien moche).

Attention aprés vous ne pouvez plus utiliser la couleur noire pure (0,0,0), vous pouvez utiliser à la place (0,0,1).

Si ça intéresse quelqu'un, je suis sur le point de terminer une classe basée sur la librairie GD 2 qui permet d'écrire et éditer du texte sur fond transparent, disponible dans quelques jours sur http://christophe.helson.free.fr

Lien vers le commentaire
Partager sur d’autres sites

Tu destines cette classe à une utilisation particulière, ou c'est juste 'comme ca' ?

Parce qu'à l'époque où tout le monde veut mettre un maximum de contenu texte sur la page, il peut paraitre surprenant de vouloir écrire du texte 'en image', non ?

C'est vrai qu'au niveau de la reproduction de la page, ca peut poser des problèmes, et donc régler .. le problème du copyright dudit texte. Mais celui-ci ne sera pas indexé, ce qui n'est pas forcément mieux...

(quoiqu'une utilisation sympa peut être l'utilisation en balise 'antispam' pour les adresses email :D )

D'où ma question..

(et préviens nous lorsque c'est ok ;) )

Lien vers le commentaire
Partager sur d’autres sites

Le point de départ est uniquement de progresser en développement objet php5. Comme j'aime l'aspect imagerie, j'ai choisi de creuser les possibilités de la librairie GD. Aprés en lisant les commentaires du manuel php, j'ai vu que ça pouvait correspondre à un manque dans le domaine.

Effectivement ce n'est pas du tout adapté à un point de vue rédactionnel, puisque non référençable. Je le verrais plutôt pratique d'un point de vue graphisme.

Je vous tiens au courant.

Lien vers le commentaire
Partager sur d’autres sites

La classe textImg permet de transformer un texte en image PNG avec un fond transparent. Elle utilise la librairie GD version 2. Les caractéristiques principales sont :

* le choix de la police, la taille, l'angle d'écriture et la couleur du texte,

* le calcul optimisé des dimensions de l'image en fonction de la longueur du texte,

* la création d'un arrière plan transparent dans l'image,

* le positionnement dans une image de fond existante pour fusionner les deux.

Je vous invite à la tester si vous êtes intéressés par le graphisme sous PHP. Toutes vos remarques seront les bienvenues ;)

Il y a également sur le site une page d'application qui vous laissera assouvir vos instincts de taggeurs enfouis en vous depuis votre adolescence :fou:

Enjoy,

http://christophe.helson.free.fr/textimg.php5

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...