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 :

Création image suivant 7 points


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut Création image suivant 7 points
    Bonjour à Toutes et à Tous,

    J'espère être dans le bon forum.

    Mon but est de créer un graph assez basic consistant à permettre de visualiser les variations de stats sur simplement une semaine.

    Mon project est déjà établi sur la récup du contenu des stats de chaque jour : $lundi, $mardi etc.

    Consistera ensuite à créer les variations graphiques inhérentes à ces 7 données.

    Et là je ne sais vers quelle méthode me diriger pour éviter les mauvaises pistes.

    J'ai par exemple découvert aussi un biblio nommée "Imagick" qui a l'air super sympa.

    Mais peut-être que la classique GD lib est suffisante, puisqu'elle permet facilement de générer des images comme cet exemple :

    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
    <?php
    	// https://stackoverflow.com/questions/901201/create-a-dynamic-png-image
        $your_text = "Helloooo Worldddd";
     
        $IMG = imagecreate( 250, 80 );
        $background = imagecolorallocate($IMG, 0,0,255);
        $text_color = imagecolorallocate($IMG, 255,255,0); 
        $line_color = imagecolorallocate($IMG, 128,255,0);
        imagestring( $IMG, 10, 1, 25, $your_text,  $text_color );
        imagesetthickness ( $IMG, 5 );
        imageline( $IMG, 30, 45, 165, 45, $line_color );
        header( "Content-type: image/png" );
        imagepng($IMG);
        imagecolordeallocate($IMG, $line_color );
        imagecolordeallocate($IMG, $text_color );
        imagecolordeallocate($IMG, $background );
        imagedestroy($IMG); 
        exit;   
    ?>
    Je précise que je ne souhaite aucunement passer par une BdD pour des raisons bien précises, ni des biblio trop complexes et lourdes.

    Merci d'avance de toute lumière afin de faire avancer mon projet.

    DS7

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Je ne connais pas Imagick, mais GD peut tout à fait créer des graphes.

    Il faut juste que tu définisses bien les dimensions/positions de tes différents éléments, ensuite tout est affaire de ratio.

    Tu peux utiliser imagefilledrectangle() ( https://www.php.net/imagefilledrectangle ) pour dessiner tes barres quotidiennes.

    Bonne découverte

  3. #3
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Séb, me semble aussi que nous nous sommes croisés sur un autre forum, sur un langage autre.

    Cela fait déjà... Comme le temps passe.

    Bref, je pense avoir trouvé mon bonheur :

    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
    <?php 
        $lundi = 152;
    
        $visites = array($lundi, 254, 381, 652, 896, 720, 140);
    
        header ("Content-type: image/png"); 
    	
        $largeurImage = 235; 
        $hauteurImage = 150;
    	
        $im = ImageCreate ($largeurImage, $hauteurImage) 
                or die ("Erreur lors de la création de l'image");         
        $blanc = ImageColorAllocate ($im, 255, 255, 255); 
        $noir  = ImageColorAllocate ($im, 0, 0, 0);  
        $bleu  = ImageColorAllocate ($im, 0, 0, 255);         
     	
    	for ($jour=1; 
    	     $jour<=7; $jour++) 
    	{
                 ImageString ($im, 0, $jour*30, $hauteurImage-10, $jour, $noir);
            }
    		
    	// le nombre maximum de visites
        $visitesMax = 1000;
        
    	//                     7 = nombre de barres
         // for ($jour=1  ; $jour<=7; $jour++) // OK mais c'est un chiffre
    	$jour = 'A'; // <-- j'ai ajouté 
    	for ($jour='A'; $i != 'AA'; $jour++) // Pour que ce soit des lettres 
    
    	{
    		// Élevation des barres
            $hauteurImageRectangle = round(($visites[$jour-1]*$hauteurImage)/$visitesMax);
    		// Tracé des barres
            ImageFilledRectangle ($im, $jour*30-7, $hauteurImage-$hauteurImageRectangle, $jour*30+7, $hauteurImage-10, $bleu);
    		// Indications au dessus des barres
            ImageString ($im, 0, $jour*30-7, $hauteurImage-$hauteurImageRectangle-11, $visites[$jour-1], $noir);
        }				
        
        ImagePng ($im); 
        imagedestroy($im); // j'ai ajouté	
    ?>
    Mais me manque seulement une chose : celle de changer le chiffre sous chaque barre, contre les trois premières lettres des jours = Lun - Mar - Mer - etc.

    La boucle for doit permettre cela, mais je patine dessus

    Si quelqu'un sait dompter la ligne 30, merci d'avance

    L'image attachée donne le résultat presque escompté.

    DS7
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Séb, me semble aussi que nous nous sommes croisés sur un autre forum, sur un langage autre.
    Pas sûr, j'ai jamais été très actif ailleurs ou sur un autre langage


    Tu pourrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $jours = [1 => 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'];
     
    for ($jour = 1; $jour <= 7; $jour++) {
        imagestring($im, 0, $jour * 30, $hauteurImage - 10, $jours[$jour], $noir);
    }

  5. #5
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut Nous avançons du but
    Whaouuuhh super !

    Merci, déjà les indications sont présentent sous les barres, mais les chiffres existent toujours , voir image jointe.

    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
    <?php 
    	$lundi = 152;
     
        $visites = array($lundi, 254, 381, 652, 896, 720, 140);
     
        header ("Content-type: image/png"); 
    	/*
        $largeurImage = 400;
        $hauteurImage = 300;
    	*/
    	$largeurImage = 235; 
        $hauteurImage = 150;
     
        $im = ImageCreate ($largeurImage, $hauteurImage) 
                or die ("Erreur lors de la création de l'image");         
        $blanc = ImageColorAllocate ($im, 255, 255, 255); 
        $noir  = ImageColorAllocate ($im, 0, 0, 0);  
        $bleu  = ImageColorAllocate ($im, 0, 0, 255);         
     
    	for ($jour=1; 
    		 $jour<=7; $jour++) 
    	{
            ImageString ($im, 0, $jour*30, $hauteurImage-10, $jour, $noir);
        }
     
    	// le nombre maximum de visites
        $visitesMax = 1000;
     
     
     
    	$jours = [1 => 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'];
    	for ($jour = 1; $jour <= 7; $jour++) 
    	{
    	 // imagestring($im, 0, $jour * 30, $hauteurImage - 10, $jours[$jour], $noir);
    		imagestring($im, 2, $jour * 30, $hauteurImage - 10, $jours[$jour], $noir);
     
     
     
    		// Élevation des barres
            $hauteurImageRectangle = round(($visites[$jour-1]*$hauteurImage)/$visitesMax);
    		// Tracé des barres
            ImageFilledRectangle ($im, $jour*30-7, $hauteurImage-$hauteurImageRectangle, $jour*30+7, $hauteurImage-10, $bleu);
    		// Indications au dessus des barres
            ImageString ($im, 0, $jour*30-7, $hauteurImage-$hauteurImageRectangle-11, $visites[$jour-1], $noir);
        }				
     
        ImagePng ($im); 
    	imagedestroy($im); // j'ai ajouté	
    ?>
    Images attachées Images attachées  

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Mon petit script remplaçait ta boucle ligne 18

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

Discussions similaires

  1. [ImageMagick] Création image transparente
    Par alexmorel dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/10/2006, 15h26
  2. création image vectoriel
    Par fanette dans le forum Imagerie
    Réponses: 42
    Dernier message: 04/08/2006, 11h02
  3. [VBA-E] inserer une image suivant état donné
    Par totoza dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/05/2006, 14h02
  4. boutons "image suivante" & "image précéde
    Par Mimisator dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2006, 13h53
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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