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 un jpg sans passer par un fichier jpg


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut Afficher un jpg sans passer par un fichier jpg
    Bonjour,

    Voilà, je compte utiliser la JpGraph pour un proj, mais je regardais la méthode stroke() à qui on peut ne passer aucun paramètre (affichage direct de l'image générée à l'écran), un nom de fichier (création de l'image dans un fichier) ou un image handle, qui j'ai cru comprendre était géré par la GD2.

    C'est sur cette dernière option que je voudrais me rabatre dans la mesure ou je ne souhaite pas créé de fichier temporaires...

    Alors créer le fichier et l'envoyer avec un header, je sais faire, mais pour ce qui est de passer d'un handle GD2 -> balise <img> html, je vois pas comment faire...

    Donc en résumé, la question est "comment peut on afficher une image GD2 que l'on vient de générer en mémoire dans une balise html <IMG> sans passé par un fichier temporaire ?

    Merci

    Edit : j'ai quand même idée de créer une page PHP qui génère le fichier et l'envoi avec un header type-contant img/jpeg, et appeler <img src="./myfile.php?param=xxxx">

    C'est viable ? y'a plus simple ?
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Cette methode est viable !

    En revanche, je ne saurais te dire s'il y a plus simple, mais cette méthode l'est deja non ?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Je suppose qu'elle est bonne... J'espere que le fait de passer un .php en src à la balise img va pas poser de problème (je me voit pas refaire la config des extensions apache).

    Je ne l'ai pas mise en oeuvre car je me heurte à un autre problème : le passage de paramètre...

    La méthod GET ne me parait en effet pas idiqué compte tenu de la taille du parametre (2 tableau de plusieur milliers de points)... LA solution serait donc de refaire mon calcul de point dans la page appelée, mais à 4 ou 5 secondes le traitement de création de la liste de point, ça me fait mal de le faire 3 fois (3 images à affichés)... surtout qu'il faut ajouter à ça le temps de traitement de jpgraph...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  4. #4
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    passe tes parametre en session, mais c'est moyen...
    deY!

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Pour le *.php dans le src de la balise img y a pas de soucis.
    Le navigateur fait une requete HTTP GET sur la valeur de src et affiche le résultat retourné : donc du moment que ta page php retourne un contenu image valide avec l'entête qui va bien "Content-type: image/jpg" il ne devrait pas y avoir de problème.

    Quant aux paramêtres, est tu obligé de faire le calcul avant et apres ?
    Ne peux-tu pas les faire juste au moment de retourner l'image ?

    Sinon, sauvegarde les après le premier calcul : soit en session comme préconisé par deY!, soit dans un fichier. (Mais les sessions ne me parraissent pas trop mal).

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Bha le problème est justement d'être obligé de faire le calcul avant et après avec cette méthode...

    En fait, l'appli récupère un gros tat de données de la BDD, effectue un certain nombre de calcul dessus (interpolation, calcul médiane, variance, equart type voir analyse syntaxique quand il s'agit de texte au lieu de points...) et affiche les résultat textuelles ainsi que les graph qui y correspondent.

    Le graph généré par l'appli est une image (que je ne souhaite pas stocké sous forme de fichier temporaire).

    Le problème qui se pose à moi est de faire que l'image non stockée physiquement soit l'affichée sur ma page en dessous des résultats textuels.

    Je doit donc faire pour afficher l'image un fichier PHP indépendant qui renvoi le MIME qui va bien, et mettre le lien vers se fichier dans mon <img>.

    Le problème du src=ect... c'est que j'ai que le GET, et mes paramètres sont bien trop importants pour ce type de passage de paramètre. Donc la solution consisterai à refaire le calcul dans le fichier PHP image.

    Ensuite, l'idée de la $_SESSION est effectivement pas idiote :p

    Je vais donc m'y essayé...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  7. #7
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Et en crée ton image avec GD2 ?
    De toute façon si tu génére ton image avec les valeurs que tu calcul, tu es obligé d'effectuer tes calculs, puis d'envoyer ces resultats...

    Mais vu ce que tu dis, je crois que tu as une libraire qui permet de genérer des histogramme et toute sorte de chose avec les valeurs que tu lui transmet, enfin je dis ça parceque tu abordes les sujet d'ecart type et mediane... par contre j'ai oublié le nom de cette libraire
    deY!

  8. #8
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    passes tes infos récup de la bdd dans l'url de ton fichier php qui genere l'image. Ainsi, tu n'aura pas à faire les calculs avant ET apres mais juste apres

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    L'image sort deja en GD2, mais impossible d'afficher du GD2 dans la page HTML sans passer par un fichier temporaire ou un header qui fera disparaitre tout le HTML... Enfin je crois, si je me treompe, dite moi :p

    Pour les calcul statistiques, je dev ma propre lib. La librairie sert juste a convertir / afficher mes valeurs sous forme d'image (gd2).

    Et comme je disais, que ça soit les calculs préliminaire ou le création de l'image GD2 via la lib d'affichage, les calculs sont long !

    L'idée de base était donc de faire le calcul statistiques une 1er fois sur ma page principale, et une 2eme fois + création image sur le fichier appelé par <img> dans ma page principle... ce qui fait fait bien faire 2 fois le calcul statistiques.

    Ensuite, je pense que la réponse à été donnée, il suffit de passer les résultats de mes calculs et mes champs de points via SESSION. J'espere juste que ça va pas être trop lourd :p
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  10. #10
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    fait un cache. Tu enregistre dans un fichier tes résultats graphiques et si ils sont trop vieux, tu refais le calcul.

  11. #11
    Membre actif

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Citation Envoyé par Korko Fain
    passes tes infos récup de la bdd dans l'url de ton fichier php qui genere l'image. Ainsi, tu n'aura pas à faire les calculs avant ET apres mais juste apres
    Le soucis qui peut se poser avec cette technique, c'est qu'il me semble que la taille d'une url est limitée, donc s'il y a beaucoup de paramêtre à passer, ça va bloquer...

  12. #12
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    En même temps tu ne passes que du texte en session, ou des tableaux... mais rien de trés gros.
    deY!

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    j'utilise jpgraph et le même principe <img src="mongraph.php" /> pour générer mon mon image, ca marche juste pour pouvoir enregistrer l'image (click bouton droit enregistrer sous) sous Firefox, il ajout l'extension a la fin genre mongraphe.php.jpg mais IE$ le nom sera mongraph.php. , l'utilisateur doit changer a chaque fois l extension,

    que pensez vous de l'idée de générer l'image en utilisant Stroke(img/tmp/mongraph.jpg) par un appel AJAX de "mongraphe.php"
    puis mettre <img src="mongraph.jpg" /> ?

    y a pas un moyen plus simple pour regler ca ?

    Merci énormément

  14. #14
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Est-ce que mongraphe.php contient bien les bon header ? Pcq je ne pense que cela vienne du navigateur.
    deY!

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci de votre réponse.

    oui exactement, il contient les bon header crée par jpgrphe,
    j arrive a afficher l image, mais c juste la fonctionalité "enregistrer sous" qui me pose problème, y a toujours le nom du fichier .php qui s affiche comme nom par defaut de l image

  16. #16
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    transmet le nom de la photo dans les header... parceque en faite il garde le nom du fichier php par default
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-disposition: attachment; filename='.basename($fichier));
    deY!

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/12/2014, 16h20
  2. execution de requete sans passer par un fichier sql
    Par funboard dans le forum Oracle
    Réponses: 5
    Dernier message: 11/12/2007, 10h31
  3. Réponses: 8
    Dernier message: 15/04/2007, 13h14
  4. Réponses: 5
    Dernier message: 13/04/2006, 22h54
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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