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

Langage PHP Discussion :

Afficher image sur autre page php avec fonction


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 0
    Points
    0
    Par défaut Afficher image sur autre page php avec fonction
    Salut,

    j'ai un code qui afficher un cercle vert dans un fichier vert.php. J'aimerai afficher cette image sur une autre page à l'aide d'une fonction.

    Si j'utilise la balise <img src="vert.php"> ça fonctionne. Mais si je met le code dans le fonction et que j'appelle la fonction sur une autre page, j'ai une erreur "l'image ne peut pas être affiché car elle contient des erreurs". Si j'appelle la fonction dans vert.php, ça fonctionne aussi.
    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
    <?php
    function vert()
    {
    header ("Content-type: image/png");
    $x = 11; //largeur de mon image en PIXELS uniquement !
    $y = 11; //hauteur de mon image en PIXELS uniquement !
     
    /* on créé l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
    $image = imagecreatetruecolor($x,$y);
     
    $vert = imagecolorallocate($image, 0, 255, 0);
     
    /* on créé la couleur et on l'attribue à une variable pour ne pas la perdre */
    imagefilledellipse($image,5,5,10,10,$vert); //on créé un cercle
    imagepng($image); //renvoie une image sous format png
    imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    }
    ?>
    <?php
    include 'vert.php';
    vert();
    ?>
    Une idée pourquoi j'ai ça ?

    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne peux pas avoir en même temps l'image et le document HTML (à part en embarquant l'image en base64 dans la source HTML mais ce n'est pas la pratique courante ou recommandée).
    C'est pour cela qu'il faut passer par une balise <img> qui appelle l'image.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 0
    Points
    0
    Par défaut
    Re,

    oui c'est ce que je faisais et ça fonctionnait. Mais maintenant je dois regrouper toutes mes images dans un fichier php, j'ai donc pensé à mettre chaque images dans une fonction et les appeler là où je les ai besoin.

    J'ai essayé plusieurs syntaxe avec <img> : <img src= "<?php vert(); ?>" alt=""> ou encore echo '<img src= "vert.php?'.vert().'" alt="">';

    Mais toujours la même erreur... J'ai remarqué que si j'appelle la fonction vert(); dans Vert.php et que je fais <img src= "Vert.php" alt="">, j'ai la même erreur. Alors que si je vais sur la page Vert.php l'image s'affiche bien.

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu peux faire comme suit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Image par défaut : <img src="test9145b.php"/><br/>
    Image verte : <img src="test9145b.php?img=vert"/><br/>
    Image bleue : <img src="test9145b.php?img=bleu"/><br/>
    Image rouge : <img src="test9145b.php?img=rouge"/><br/>
    Image jaune : <img src="test9145b.php?img=jaune"/> qui n'existe pas donc on affiche l'image verte<br/>
    Qui affiche :

    Nom : 170309-001.JPG
Affichages : 793
Taille : 21,7 Ko

    test9145b.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
     
    <?php
    function vert()
    {
    header ("Content-type: image/png");
    $x = 11; //largeur de mon image en PIXELS uniquement !
    $y = 11; //hauteur de mon image en PIXELS uniquement !
     
    /* on créé l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
    $image = imagecreatetruecolor($x,$y);
     
    $vert = imagecolorallocate($image, 0, 255, 0);
     
    /* on créé la couleur et on l'attribue à une variable pour ne pas la perdre */
    imagefilledellipse($image,5,5,10,10,$vert); //on créé un cercle
    imagepng($image); //renvoie une image sous format png
    imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    }
    function rouge()
    {
    header ("Content-type: image/png");
    $x = 11; //largeur de mon image en PIXELS uniquement !
    $y = 11; //hauteur de mon image en PIXELS uniquement !
     
    /* on créé l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
    $image = imagecreatetruecolor($x,$y);
     
    $rouge = imagecolorallocate($image, 255, 0, 0);
     
    /* on créé la couleur et on l'attribue à une variable pour ne pas la perdre */
    imagefilledellipse($image,5,5,10,10,$rouge); //on créé un cercle
    imagepng($image); //renvoie une image sous format png
    imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    }
    function bleu()
    {
    header ("Content-type: image/png");
    $x = 11; //largeur de mon image en PIXELS uniquement !
    $y = 11; //hauteur de mon image en PIXELS uniquement !
     
    /* on créé l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
    $image = imagecreatetruecolor($x,$y);
     
    $bleu = imagecolorallocate($image, 0, 0, 255);
     
    /* on créé la couleur et on l'attribue à une variable pour ne pas la perdre */
    imagefilledellipse($image,5,5,10,10,$bleu); //on créé un cercle
    imagepng($image); //renvoie une image sous format png
    imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    }
    ?>
    <?php
    //---- Récupération du paramètre
    $img = '';
    if (isset($_GET['img'])) { 
     $img = $_GET['img'];
    } 
     
    if ($img == 'rouge') {
     rouge();
    } 
    if ($img == 'bleu') {
     bleu();
    }
    //---- si la couleur passée en paramètre est "vert" ou bien n'est pas référencée
    vert();
    ?>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 0
    Points
    0
    Par défaut
    Salut,
    merci pour le code, ça fonctionne presque !

    Je m'explique : Si je met le code dans un fichier image.php vide, ça fonctionne parfaitement. Par contre, si je met le code dans mon fichier config.php où il y a aussi mes connexions à la db, mes variables "globales",... ça ne fonctionne plus. J'ai de retour la même erreur.

    Je ne sais pas si c'est possible ou recommandé de mettre mes création d'images dans le fichier config.php mais je trouve ça juste plus pratique.

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Si je comprends bien ça ne te dérange pas que chaque balise img aille recharger ton fichier config.php ? Excuse moi mais c'est du grand n'importe quoi. Et je ne parle pas de la sécurité ! J'imagine le gars qui regarde ton code source et qui voit <img src="/config.php?couleur=vert" />. Un vrai pousse au crime.

    Si tu utilises ton config.php pour afficher des images aujourd'hui, demain tu lui ajouteras quoi parce que c'est plus pratique pour toi ?

    A savoir. Pour qu'une image puisse être traitée aucun caractère ne doit être envoyé avant la fonction header donc il suffit que ton code qui précède fasse un echo ou un print ou bien il suffit qu'il y ait un caractère avant la première balise <?php pour que ça ne fonctionne pas.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 0
    Points
    0
    Par défaut
    Oups. Je vais donc utiliser un fichier spécial pour mes images.

    Merci encore

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/12/2014, 15h22
  2. [MySQL] Une image ne s'affiche pas sur ma page PHP mais les autres oui
    Par garance.tosello dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/10/2014, 19h50
  3. [MySQL] non affichage d'image sur ma page php via mysql
    Par cristelle1986 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 02/09/2014, 20h17
  4. Imprimer une seule image sur une page php
    Par isa150183 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2011, 16h32
  5. Afficher image sur une page html via c
    Par Relyss dans le forum Réseau
    Réponses: 3
    Dernier message: 17/12/2009, 11h40

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