Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2007, 11h13   #1
Membre habitué
 
Avatar de Alexandrebox
 
Inscription : août 2006
Messages : 613
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 613
Points : 107
Points : 107
Par défaut Comment créer une image à partir d'un texte ?

Bonjour,
J'ai fait un code qui génère à chaque chargement de la page une suite de 5 chiffres et lettres. Le code marche parfaitement. Sauf que au lieu d'écrire echo $string, j'aimerais afficher $string comme une image.

Voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
$length = 5; // Longueur de la chaîne générée en image
$alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Liste des caractères possibles
$nb_characters = strlen($alphabet); // Nombre de caractères possibles
 
// La variable code contient la chaîne qui sera générée en image
$string = '';
for($i = 0; $i < $length; ++$i)
{
    $string .= $alphabet[mt_rand(0, $nb_characters-1)];
}
?>
Merci pour votre aide.
Alexandrebox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 11h26   #2
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
Salut,

Une solution c'est que tu peux faire un fichier que tu appel image.php

tu mets ca dedans :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
 
header ("Content-type: image/png");
//on recupere la variable passee dans l'url.
$nb=$_GET['nombre'];
 
//on cree une image de 100x20 pixels
$im = imagecreate (60, 20);
 
//couleur de fond de l'image (R,V,B)
$couleur_fond = imagecolorallocate($im, 0, 0, 0);      
 
//couleur du texte
$noir = imagecolorallocate ($im, 255, 255, 255);   
 
//on ecrit le texte
 
// ImageString($im, $taille_texte, $coordonnees_x, $coordonnees_y, $texte, $couleur_texte);
 
ImageString($im, 5, 0, 0, $nb, $noir);
 
//on genere l'image
imagepng ($im);
 
?>
et après tu fait appel comme ca : <img src="image.php?nombre=".$alphabet." ...

Il existe 1001 façon sur internet si tu trouve pas mieux tu peux utiliser celle-ci.

Bon courage!!!
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 11h32   #3
Membre habitué
 
Avatar de Alexandrebox
 
Inscription : août 2006
Messages : 613
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 613
Points : 107
Points : 107
Merci bcp.
Mais sur Internet c'est le même exemple. C'est toujours envoyer un fichier.

Je suis déjà sur ma page. Est ce que tu peux m'aider stp toi qui comprends bcp mieux que moi. Ma variable est $string

Ce que j'aimerais c'est d'afficher $string comme image sur cette même page. Avec ces histoires de header, j'ai toujours des erreurs. D'autant plus ce que ce ficheier je dois après le manipuler. C'est pouruoi j'aimerais juste qu'on me dise comment afficher $tring en image

Merci bcp pour ta gentillesse
Alexandrebox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 12h25   #4
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
1 Tu crée un fichier que tu appel image.php
2 Tu y mets le code du dessus.
3 Dans ton fichier ou tu veux afficher l'image ET ou tu construis ta variable string tu mets ce code :
Code :
<img src="image.php?nombre=".$string." ..>
C'est pas compliqué mickey!!

Citation:
D'autant plus ce que ce ficheier je dois après le manipuler
Tu parles de quel fichier??? et tu comptes en faire quoi??? Si ca se trouve ma solution n'est pas la plus adaptée à ton problème.
Prends le temps d'exposer toute ta problématique avant, sinon tu risque de partir sur une solution qui au finale ne sera pas le bonne et tu sera obligé de tout refaire.
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 12h53   #5
Membre habitué
 
Avatar de Alexandrebox
 
Inscription : août 2006
Messages : 613
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 613
Points : 107
Points : 107
Merci pour ta patience et ta gentillesse.

Le problème, c'est que tu me donne un code complètement différent de ce que j'ai écrit. La variable string n'est pas utilisée. En plus certaines variables utilisées n'existe pas. J'ai vu ce genre de code sur Internet ici et là. Pourras-tu stp me montrer à partir de ce que j'ai déjà fait. comment juste afficher le résultat $string en image. Voici le code. il y a quelques trucs squ clochent. Les variables.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<?php
$length = 5; // Longueur de la chaîne générée en image
$alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Liste des caractères possibles
$nb_characters = strlen($alphabet); // Nombre de caractères possibles
 
// La variable code contient la chaîne qui sera générée en image
$string = '';
for($i = 0; $i < $length; ++$i)
{
    $string .= $alphabet[mt_rand(0, $nb_characters-1)];//TEXTE A AFFICHER
}
 
//Début de ton code
$im = imagecreate (60, 20);
//couleur de fond de l'image (R,V,B)
$couleur_fond = imagecolorallocate($im, 0, 0, 0);      
 
//couleur du texte
$noir = imagecolorallocate ($im, 255, 255, 255);   
 //on ecrit le texte
 // ImageString($im, $taille_texte, $coordonnees_x, $coordonnees_y, $texte, $couleur_texte);
 ImageString($im, 5, 0, 0, $nb, $noir);
 //on genere l'image
imagepng ($im);
?>
Sauf que ce code ne va jamais marcher parce que ces variables n'existent pas
$taille_texte, $coordonnees_x, $coordonnees_y, $texte, $couleur_texte.

Pourras-tu me montrer à partir de ce code stp?
Alexandrebox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 13h34   #6
Membre habitué
 
Avatar de Alexandrebox
 
Inscription : août 2006
Messages : 613
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 613
Points : 107
Points : 107
J'ai maintenant compris après avoir bouquiné un peu.

Il faut forcément passer l'image par un header. Un deuxième ficher est obligatoire. Ok le message est passé. Voici ce que j'ai fait maintenant

Fichier image.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 
<?php
$length = 5; // Longueur de la chaîne générée en image
$alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Liste des caractères possibles
$nb_characters = strlen($alphabet); // Nombre de caractères possibles
 
// La variable code contient la chaîne qui sera générée en image
$string = '';
for($i = 0; $i < $length; ++$i)
{
    $string .= $alphabet[mt_rand(0, $nb_characters-1)];
}
 
// Récupération de la longueur de la chaine à afficher
$str_length = strlen($string);
 
// Création de la zone image en fonction de la longueur de texte à afficher
$image = imagecreatetruecolor(30 * $str_length, 50);
 
// Création du fond de l'image
for($x = 0; $x < imagesx($image); ++$x)
{
    for($y = 0; $y < imagesy($image); ++$y)
    {
        if (mt_rand(1,5) == 4 )
        {
            $vred = mt_rand(0, 100);
            $vgreen = mt_rand(0, 100);
            $vblue = mt_rand(0, 100);
        }
        else
        {
            $vred = mt_rand(100, 150);
            $vgreen = mt_rand(100, 150);
            $vblue = mt_rand(100, 150);
        }
 
        // Allocation d'une couleur au fond
        $color = imagecolorallocate($image, $vred, $vgreen, $vblue);
 
        // Affichage d'un pixel ayant la couleur du fond
        imagesetpixel($image, $x, $y, $color);
 
        // Suppression de la couleur du fond allouée
        imagecolordeallocate($image, $color);
    }
}
 
// Création de la bordure
$vred = mt_rand(0, 240);
$vgreen = mt_rand(0, 240);
$vblue = mt_rand(0, 240);
 
// Allocation d'une couleur à la bordure
$color = imagecolorallocate($image, $vred, $vgreen, $vblue);
 
// Tracé de la bordure
imagerectangle($image, 0, 0, imagesx($image)-1 , imagesy($image)-1, $color);
 
// Suppression la couleur de la bordure allouée
imagecolordeallocate($image, $color);
 
// Création du texte
for($i = 0; $i < $str_length; ++$i)
{
    $vred = mt_rand(150, 240);
    $vgreen = mt_rand(150, 240);
    $vblue = mt_rand(150, 240);
 
    $size = mt_rand(20, 30);
    $angle = mt_rand(-10, 20);
    $x = 13 + (20 * $i);
    $y = mt_rand(30, imagesy($image) - 10);
    $color = imagecolorallocate($image, $vred, $vgreen, $vblue);
    $font = 'comic.ttf';
 
    // Dessin du texte
    imagettftext($image, $size, $angle, $x, $y, $color, $font, $string[$i]);
 
    // Suppression de la couleur du texte allouée
    imagecolordeallocate($image, $color);
}
 
// Création de l'image complète au format PNG
header("Content-type: image/png");
imagepng($image);
?>
Fichier dans lequel on affiche l'image
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
 
<body>
 <img src="image.php" /> 
</body>
</html>
Malheureuresement, ça ne m'affiche pas l'image.
Pourras-tu m'aider STP
Alexandrebox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 19h28   #7
Membre chevronné
 
Avatar de grabriel
 
Inscription : septembre 2006
Messages : 935
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 935
Points : 626
Points : 626
Salut,

Je répète ce que j'ai déjà mis mais différemment puisque tu n'as pas bien compris :
1 Tu prends ton bloc note tu copies texto (copier/coller) tout le code qui est au dessus et que je répète ici :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php   header ("Content-type: image/png");
 //on recupere la variable passee dans l'url. 
$nb=$_GET['nombre'];  
 //on cree une image de 100x20 pixels 
$im = imagecreate (100, 20);   
//couleur de fond de l'image (R,V,B) 
$couleur_fond = imagecolorallocate($im, 0, 0, 0);  
 //couleur du texte 
$noir = imagecolorallocate ($im, 255, 255, 255);   
//on ecrit le texte  
 // ImageString($im, $taille_texte, $coordonnees_x, $coordonnees_y, $texte, $couleur_texte);   
ImageString($im, 5, 0, 0, $nb, $noir);   
//on genere l'image 
imagepng ($im);  
 ?>
dans un fichier que tu appels image.php
TU NE TOUCHES A RIEN DANS LE CODE.
Les variables $coordonnees_x etc... sont commentées et sont là pour expliquer ce qu'il y'a en-dessous.

Dans un autre fichier tu rajoutes ce qui suit :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
$length = 5; // Longueur de la chaîne générée en image
$alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Liste des caractères possibles
$nb_characters = strlen($alphabet); // Nombre de caractères possibles
 
// La variable code contient la chaîne qui sera générée en image
$string = '';
for($i = 0; $i < $length; ++$i)
{
    $string .= $alphabet[mt_rand(0, $nb_characters-1)];
}
 
echo "<img src="image.php?\"".$string."\" alt=\"image\" />";
?>
Et si tu lances le 2eme fichier tu verras l'image.

A partir de là tu essayes de comprendre le code et tu l'appliques à ce que tu veux faire.

Bon courage!!
grabriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 04h33   #8
Membre habitué
 
Avatar de Alexandrebox
 
Inscription : août 2006
Messages : 613
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 613
Points : 107
Points : 107
Merci beaucoup. Tout marche parfaitement.
Alexandrebox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h39.


 
 
 
 
Partenaires

Hébergement Web