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] Problème de retour d'une fonction PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 47
    Par défaut [GD] Problème de retour d'une fonction PHP
    Bonjour à tous,

    Pour me familiariser avec gd j'ai créé une petite fonction PHP qui permets de créer trois rectangles, puis je fusionne ces rectangles entre eux. Le script fonctionne parfaitement si je l'exécute tel quel, les 3 images sont crées puis fusionner entre elle. Mais pour éviter de devoir copier coller mon code à chaque fois, j'ai décidé de le mettre dans une fonction et la rien ne va plus.

    Il m'affiche un texte incompréhensible :

    ‰PNG  ��� IHDR���d���d��� Œ}Ç��� PLTEþMÿ¬��ÿ9TŠa���%IDATH‰cX… 0ŒÊŒÊŒÊŒÊÐ[&A2£`Œ‚Q0h��DO>BƇç����IEND®B
    J'ai donc penser à rajouter la ligne :

    header ("Content-type: image/png");
    Juste avant l'appel de ma fonction mais rien ne change.

    Je vous poste donc mon code en espérant que vous pourrez m'aider.


    L'appel de la fonction :

    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
    <div id='conteneurhisto'>
     
     
    	<div id='histo1'>
    	<?php 
            header ("Content-type: image/png");
    	$image = creahistograme(); 
    	imagepng($image);
    	imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    	?>
     
    	</div>
     
    	<div id='histo2'>
     
    	<?php  
    	header ("Content-type: image/png");
    	$image = creahistograme(); 
    	imagepng($image);
    	imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    	?>
     
    	</div>
     
    	<div id='histo3'>
     
    	<?php  
    	header ("Content-type: image/png");
    	$image = creahistograme();
    	imagepng($image);
    	imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
    						?>
     
    	</div>
     
    </div>
    Et la fonction :

    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
    function creahistograme()
    {
    /*=====================================================================================================
    							Nous travaillons avec des images de types png
     =====================================================================================================*/
    header ("Content-type: image/png");
     
    /*=====================================================================================================
    							Declaration de la taille des images
     =====================================================================================================*/
     //Image 1
    $imagex  = 100; 
    $imagey  = 100;
     
    //Image 2
    $image2x = 100; 
    $image2y = 55;
     
    //Image 3
    $image3x = 100; 
    $image3y = 45;
     
    /*=====================================================================================================
    							Creation de la première image
     =====================================================================================================*/
    $image = imagecreate($imagex,$imagey);
    $rouge = imagecolorallocate($image, 254, 77, 1);
    //imagepng($image);
     
    /*=====================================================================================================
    							Creation de la deuxième image
     =====================================================================================================*/
    $image2 = imagecreate($image2x,$image2y);
    $orange = imagecolorallocate($image2, 255, 172, 0);
    //imagepng($image2);
     
    /*=====================================================================================================
    							Creation de la troisième image
     =====================================================================================================*/
    $image3 = imagecreate($image3x,$image3y);
    $vert   = imagecolorallocate($image3, 0, 255, 57);
    //imagepng($image3);
     
    /*=====================================================================================================
    							On mesure les images
     =====================================================================================================*/
     //image 1
    $largeur_source       = $imagex;
    $hauteur_source       = $imagey;
     
    //image 2
    $largeur_destination2 = $image2x;
    $hauteur_destination2 = $image2y;
     
    //image 3
    $largeur_destination3 = $image3x;
    $hauteur_destination3 = $image3y;
     
    /*=====================================================================================================
    					Placement de l'image pour l'image 1 et 2
     =====================================================================================================*/
    $destination_x = $largeur_destination2 - $largeur_source;
    $destination_y =  $hauteur_destination2 - $hauteur_source;
     
    /*=====================================================================================================
    			Fusion de l'image 1 et 2  et creation de la premiere image fusionné
     =====================================================================================================*/
    imagecopymerge($image, $image2, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 100);
     
    /*=====================================================================================================
    					Placement de l'image pour fusionné et  l'image 3
     =====================================================================================================*/
    $destination_x2 = $largeur_destination3 - $largeur_source;
    $destination_y2 =  $hauteur_destination3 - $hauteur_source;
     
    /*=====================================================================================================
    				Fusion de l'image fusionné avec l'image 3 
     =====================================================================================================*/
    imagecopymerge($image, $image3, $destination_x2, $destination_y2, 0, 0, $largeur_source, $hauteur_source, 100);
     
    /*=====================================================================================================
    							Affichage
     =====================================================================================================*/
    return $image;
    }
    J'ai déjà tester le return imagepng($image); sans succès.

    Cordialement Crazymonkey.

    Solution :

    Écrire le code dans une page indépendante que l'on appellera de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="nom_du_fichier.php">
    Merci à Djakisback pour son aide.

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    tu ne peux pas envoyer tes données comme ça au milieu d'un div même avec un header (en plus tu peux pas envoyer un header au milieur de ta page). Le plus simple en général est d'appeler une page de code dans un src de la balise img :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="image.php?hauteur=12&largeur=24">
    Mais tu dois pouvoir utiliser ta fonction directement (jamais testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php creahistograme(); ?>">
    Sans oublier de détruire ton image dans la fonction, enfin pas sûr que ça fonctionne...

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 47
    Par défaut
    Hum d'accord merci pour ton aide, et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php creahistograme(); ?>">
    ne fonctionne pas .

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Oui après réflexion c'était n'importe quoi LOL ^^

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

Discussions similaires

  1. problème avec retour d'une fonction php
    Par franco9 dans le forum Langage
    Réponses: 13
    Dernier message: 22/12/2012, 09h06
  2. Réponses: 5
    Dernier message: 28/02/2008, 14h35
  3. [XSLT]Probléme avec une fonction php dans un fichier xsl!
    Par Mo_Poly dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/10/2007, 07h32
  4. [POO] problème d'appel d'une fonction php
    Par merlubreizh dans le forum Langage
    Réponses: 4
    Dernier message: 26/03/2007, 17h28
  5. recuperer en php le retour d'une fonction plsql
    Par gismoblue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/03/2006, 16h39

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