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 :

Image avec coordonnées


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut Image avec coordonnées
    Bonjour à tous,

    Dans une base de données j'ai le nom d'une image avec des coordonnées. Les images sont stockées dans un dossier au format 'jpeg'.

    je désire afficher mon image sur mon site, cette image devra afficher des traits tracés selon les coordonnées de la base de données.

    En fait j'arrive à le faire grâce à ce code PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php header("Content-type: image/jpeg");
    $chemin = "./images/nom_image.jpg";
    $image = imagecreatefromjpeg($chemin);
     
    $noir = imagecolorallocate($image, 0, 0, 0);
    imageline($image, 200, 550, 50, 700, $noir);
    imagejpeg($image);
    }
    ?>
    j'appelle le fichier comme j'appelle une image (puisque mon php ci-dessus renvoie une image):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="testimagemap.php" height="<?php echo $ratio[0][6]?>" width="<?php echo $ratio[0][5] ?>"
    ça marche très bien
    Mon soucis réside dans le fait que je désire charger une image en fonction d'un produit sélectionné (concrètement mon '$chemin' ne doit pas être en dur).
    J'ai essayé en passant un $_SESSION['chemin'] mais ça ne fonctionne pas , d'où mes deux questions:

    1) comment faire pour passer mon chemin ?
    2) est-ce la meilleure méthode pour créer mon image dynamique ? (je suis parti d'un tuto trouvé sur le net)

    Merci à tous, je vous souhaite une agréable journée.

  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
    Par l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="testimagemap.php?image=cequetuveux"
    Et au traitement tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $image = str_replace('.', '', $_GET['image']);
    $chemin = "./images/" . $image . ".jpg";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup, effectivement ça fonctionne

    Je n'avais même pas osé faire passer le nom de mon image comme ça

    Par contre tu pourras peut-être m'aider encore un petit peu: j'ai un problème pour toutes les images dont le nom possède des accents
    Je peux toujours tout renommer sans accents mais c'est un sacré boulot, est-ce normal que ça ne fonctionne pas lorsqu'il y à des accents ? Merci encore.

    EDIT = > ah et je vais peut-être dire une connerie mais c'est possible de faire passer un tableau associatif de la même façon ?

  4. #4
    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
    En fait il serait mieux de travailler avec des id numérique ... dans le cas ou tes produits sont dans une base de données.

    Les accents sont une plaie à gérer pour les noms de fichier, en particulier parce que tous les système n'utilisent pas le même encodage.
    Tu peux cependant déjà utiliser la fonction urlencode pour faire transiter correctement dans l'url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="testimagemap.php?image='  . urlencode($filename) . '" />';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Les accents sont une plaie à gérer pour les noms de fichier, en particulier parce que tous les système n'utilisent pas le même encodage.
    Tu peux cependant déjà utiliser la fonction urlencode pour faire transiter correctement dans l'url :
    Malheureusement ça n'a pas fonctionné

    A l'appel de mon image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="testimagemap.php?image='  . urlencode($chemin) . '" />';
    puis mon fichier testimagemap.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $image = str_replace('.', '', urldecode($_GET['image']));
    Je ne suis pas sur de mon urldecode mais sinon mon code fonctionne toujours lorsque le nom du fichier ne contient pas d'accent. J'ai aussi vérifié la présence de mon fichier .jpg dans mon dossier...

    Merci une fois de plus

    EDIT => en fait je viens de me rendre compte que lorsque j'essaie d'afficher une image avec le chemin en dur comportant un accent ça ne fonctionne pas non plus

  6. #6
    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
    Il faut que ton fichier .php soit encodé dans le même encodage que le système de fichiers de ton serveur.
    Bref une vraie plaie les accents.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Il faut que ton fichier .php soit encodé dans le même encodage que le système de fichiers de ton serveur.
    Ah merde, comment je fais ça ?

    Bref une vraie plaie les accents.
    Effectivement

    Ah et sinon je voudrais tracer des traits sur mon image, et la rendre interactive (au clic du bouton à un endroit je désire faire apparaître un pop up ) et pour ce faire je stocke des coordonnées en base de données.
    Mon deuxième soucis (après les accents ) est que je n'arrive pas à récupérer ces coordonnées.
    Voici mes tentatives:
    1- j'arrive bien à récupérer (dans un tableau associatif) toutes mes coordonnées dans mon contrôleur mais je ne sais pas comment les faire passer dans mon image.
    2- j'ai essayé de les récupérer directement dans mon imagetest.php mais je n'y arrive pas.
    3-Stocker ça dans une super variable ? J'ai essayé de stocker ça dans session mais je ne peux faire aucun traitement du côté de mon image

    Merci une fois de plus.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Bon j'ai progressé sur le passage et l'exploitation des coordonnées:
    J'arrive maintenant à faire passer les coordonnées d'un trait à l'image à partir de la balise <img>.

    Cependant je n'arrive pas à faire passer et à exploiter toutes mes coordonnées Voici ma démarche:

    D'un côté j'appelle l'image en lui passant toutes mes coordonnées:
    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
     
    <?php
    //ajout de toutes les coordonnées dans leur tableau respectif 
                foreach ($lesNomenclatures as $uneNomenclature) {
                    array_push($x1, ($uneNomenclature['x1'] / 15) * ($ratioVal / 100));
                    array_push($y1, ($uneNomenclature['y1'] / 15) * ($ratioVal / 100));
                    array_push($xm, ($uneNomenclature['xm'] / 15) * ($ratioVal / 100));
                    array_push($ym, ($uneNomenclature['ym'] / 15) * ($ratioVal / 100));
                    array_push($x2, ($uneNomenclature['x2'] / 15) * ($ratioVal / 100));
                    array_push($y2, ($uneNomenclature['y2'] / 15) * ($ratioVal / 100));
                }
     
     
     
                //  echo 'chemin = ' . $chemin;
                echo 'SANS ACCENTS = ' . suppr_accents($chemin);
                ?> <img src="testimagemap.php?image=<?php echo suppr_accents($chemin) ?>
                <?php for ($i = 0; $i < count($x1); $i++) {
                    ?>&x1<?php echo $i ?>=<?php echo $x1[$i] ?> <?php
                }
                ?>
                     <?php for ($i = 0; $i < count($y1); $i++) {
                         ?>&y1<?php echo $i ?>=<?php echo $y1[$i] ?> <?php
                     }
                     ?>
                     <?php for ($i = 0; $i < count($xm); $i++) {
                         ?>&xm<?php echo $i ?>=<?php echo $xm[$i] ?> <?php
                     }
                     ?>
                     <?php for ($i = 0; $i < count($ym); $i++) {
                         ?>&ym<?php echo $i ?>=<?php echo $ym[$i] ?> <?php
                     }
                     ?>
                     <?php for ($i = 0; $i < count($x2); $i++) {
                         ?>&x2<?php echo $i ?>=<?php echo $x2[$i] ?> <?php
                     }
                     ?>
                     <?php for ($i = 0; $i < count($y2); $i++) {
                         ?>&y2<?php echo $i ?>=<?php echo $y2[$i] ?> <?php
                     }
                     ?>
                     "height="<?php echo $ratio[0][6] ?>" width="<?php echo $ratio[0][5] ?>"  /><?php
    d'un autre côté j'essaie d'exploiter toutes mes coordonnées:

    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
    <?php
     
    header("Content-type: image/jpeg");
     
     
    $image = str_replace('.', '', $_GET['image']);
     
     
     
     
    if ($image != "blank" && file_exists("./images/eclate/" . $image . ".jpg")) {
     
        $x1 = $_GET['x10'];
        $y1 = $_GET['y10'];
        $xm = $_GET['xm0'];
        $ym = $_GET['ym0'];
        $x2 = $_GET['x20'];
        $y2 = $_GET['y20'];
     
        $chemin = "./images/eclate/" . $image . ".jpg";
        $im = imagecreatefromjpeg($chemin);
     
        $noir = imagecolorallocate($im, 0, 0, 0);
     
        imageline($im, $x1, $y1, $xm, $ym, $noir);
        imageline($im, $xm, $ym, $x2, $y2, $noir);
     
     
        imagejpeg($im);
    } else {
        $chemin = "./images/eclate/blank.jpg";
        $im = imagecreatefromjpeg($chemin);
     
        imagejpeg($im);
    }
    ?>
    malheureusement ma balise <img> semble ne pas fonctionner car c'est toujours l'image par défaut (dans le else) qui s'affiche ...

    Puis-je m'y prendre de la sorte ? Si oui, où pourrait-être mon erreur ?

    Merci

  9. #9
    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
    Si tu supprimes les accents dans le lien mais que le vrai fichier a des accents, forcement tu ne le trouveras pas.

    Concernant ton premier code, c'est une bouillie.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Si tu supprimes les accents dans le lien mais que le vrai fichier a des accents, forcement tu ne le trouveras pas.
    J'ai renommé tous les fichiers et maintenant j'arrive à les afficher. M'enfin j'aurais préféré pouvoir les afficher avec les accents.

    Concernant ton premier code, c'est une bouillie.
    Effectivement, mais je ne sais pas faire autrement car il faut que je passe toutes les valeurs de 6 tableaux

    Du coup ça ne fonctionne pas

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/05/2011, 07h28
  2. Drag and Drop sur une image avec coordonnées générées
    Par psgman113 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 28/04/2009, 21h58
  3. Economie de mémoire pour plusieur images avec la même source
    Par neness dans le forum Composants VCL
    Réponses: 5
    Dernier message: 18/01/2004, 10h56
  4. PB affichage d'image avec IE
    Par arturo dans le forum Modules
    Réponses: 6
    Dernier message: 25/09/2003, 17h28
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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