IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[GD] Comment créer une image à partir d'un texte ?


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut [GD] 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Je sais que je ne sais rien

  2. #2
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

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

    tu mets ca dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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!!!

  3. #3
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    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
    Je sais que je ne sais rien

  4. #4
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="image.php?nombre=".$string." ..>
    C'est pas compliqué mickey!!

    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.

  5. #5
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?
    Je sais que je ne sais rien

  6. #6
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Je sais que je ne sais rien

  7. #7
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!!

  8. #8
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup. Tout marche parfaitement.
    Je sais que je ne sais rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2015, 10h16
  2. Créer une image à partir d'un fenêtre
    Par dword2add dans le forum Windows
    Réponses: 6
    Dernier message: 19/09/2006, 12h46
  3. [VBA-A]Comment créer une table à partir d'un recordset ?
    Par NoViceDel dans le forum VBA Access
    Réponses: 22
    Dernier message: 23/05/2006, 16h10
  4. Créer une image à partir d'une URL ?
    Par DrySs dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2006, 09h39
  5. comment créer une image sous forme d'eclipse(ronde)
    Par unix27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2005, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo