Générer une image à partir d'un email

WRInaute passionné
En fait j'ai plus ou moins réussi en faisant ainsi :

Dans un fichier image.php, j'ai ça :
Code:
<?php
$strAdresseEmail=$_GET['email'];
// Nouvelle image 100*30
$im = imagecreate(100, 30);

// Fond blanc et texte bleu
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);

// Ajout de la phrase en haut à gauche
imagestring($im, 5, 0, 0, $strAdresseEmail, $textcolor);

// Affichage de l'image
header("Content-type: image/jpeg");
imagejpeg($im);
?>

J'affiche la chose dans la page, ainsi :
Code:
<?php
echo '<img src="image.php?email='.$email.'" alt="image" >';
?>

Mais là j'ai deux problème : D'abords, pour le fond de l'image, je souhait du #FFFFCC.

Ensuite, la taille de l'image ne s'ajuste pas à la taille de l'email. S'il est trop long, il est coupé.
 
WRInaute passionné
Meeuuuhhh a dit:
Code:
$bg = imagecolorallocate($im, 255, 255, 255);
Mais là j'ai deux problème : D'abords, pour le fond de l'image, je souhait du #FFFFCC.
Un petit peu d'héxadécimal donne FFFFCC = 255, 255, 204 (et pas 255 à la fin, pour le dernier paramètre de couleur!) car C = 12, donc CC = (12 x 16) + 12 = 204. :wink:

Pour la taille de l'image, ben... mets quelques pixels en plus au début de la création de l'image.
 
WRInaute passionné
Oui mais je ne connais pas à l'avance la taille de l'email...

Pour l'hexadécimal, j'aurais besoin d'un tuto, vu qu'il me faut aussi du DFF6F2.
 
WRInaute accro
tu peux tout à fait compter le nombre de caractères qui composent l'email et à partir de celà déterminer automatiquement la taille de l'image qui sera générée, non ?
 
WRInaute passionné
Ouais mais c'est va être assez approximatif quand même.

C'est idiot ce truc, pourquoi la taille du texte ne s'adapte-t'elle pas toute seule à l'image ?
 
WRInaute passionné
Ah bah voilà, ça fonctionne impeccable avec le code trouvé sur le lien UsagiYojimbo. Une reco, une.

Il me reste plus qu'à obtenir une police noire ou bleue, avec un fond en #DFF6F2

Je vais voir si je trouve un tuto sur le net, mais si vous savez, ça m'arrange (j'ai pas tout compris à l'exemple d'anemone-clown).
 
Nouveau WRInaute
Bonsoir ?

Pourquoi se donner tout ce mal à vouloir cacher une adresse mail et perdre du temps à créer une image alors que tu donnes quand même l'adresse aux spammeurs dans le code ?
Meeuuuhhh a dit:
<?php
echo '<img src="image.php?email='.$email.'" alt="image" >';
?>

8O

A+
 
WRInaute occasionnel
Il faudrait au moins utiliser la fonction strrev() une fois dans l'appel du fichier qui génère l'image, et une fois dans le fichier avant de construire l'image de l'email.
Ca cache pas énormément l'email au spambots mais la plupart ne vont pas développer un script juste pour capter les emails de ton site, à part si il est très connu.

http://fr.php.net/strrev

Code:
<?php
echo '<img src="image.php?email='.strrev($email).'" alt="image" >';
?>
 
WRInaute passionné
Oui c'est une idée, mais en fait je vais passer l'id en paramètre et puis j'irai chercher l'email correspondant dans la BD juste avant la création de l'image, comme ça l'adresse ne passera pas par l'URL.

Par curiosité, comment reconstruit-on l'email ensuite, avec cette fonction ?
 
WRInaute occasionnel
Tout dépend combien de fois tu dois utiliser ce script de génération d'email graphique, mais si c'est beaucoup tu devrais peut etre mettre l'image en cache ou bien eviter de faire un appel a la base de donnée supplémentaire.
 
WRInaute passionné
Le cache, voilà bien un truc auquel je ne me suis jamais intéressé jusqu'à maintenant... Comment fait-on pour "mettre une image en cache" LiFi ?
 
WRInaute occasionnel
simplement dans ton script tu procèdes comme ça :

1. regarde l'email, est-ce qu'un fichier image existe déjà pour cet email ?
2. si oui alors renvoyer le fichier image, fin du script.
3. si non alors générer l'image, la stocker dans un fichier et le renvoyer, fin du script.

voila, apres a toi de determiner ou tu stockes tes fichiers images (dans un repertoire expres) avec quel nom afin de pouvoir le retrouver facilement.
 
WRInaute passionné
Ah ouais j'ai pigé. "En cache", j'aurais dit "en dur" en fait, mais c'est pas le bon terme, comme quoi le vocabulaire est important.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut