Aller au contenu

Sujets conseillés

Posté (modifié)

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
Posté

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.

Posté

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().

Posté

[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]

Posté
[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 ?

  • 6 months later...
Posté

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

Posté

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 ;) )

Posté

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.

Posté

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

Veuillez vous connecter pour commenter

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



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