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] PNG transparent, utilisation (x)html


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut [GD] PNG transparent, utilisation (x)html
    Bonjour,

    En fait ce sont deux questions indépendantes :

    1) Png transparent
    Il semble que la transparence des images .png , dans l'instruction
    ne soit pas prise en compte. Est-ce normal? Comment faire?

    2) utilisation du code html avec du code PHP de GD
    J'ai un script en deux séquences qui crée
    -des images avec GD
    -et effectue un traitement avec HTML

    Les deux donnent séparément un résultat correct.
    Si les deux sont dans le même script, les lignes HTML sont écrites en commentaires à l'écran.

    Voici la fin et le début de chacune des séquences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $im62="oliv/im_1204_r.jpg";
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <META NAME="DESCRIPTION" CONTENT="agenda orchestre musette, calendrier the dansant, diner dansant,soirée dansante, agenda accordeon musette, ambiance musette, calendrier orchestre olivier, agenda sarthe 72, calendrier the dansant orchestre olivier, agenda bruno leblanc, ambiance musette pays de la loire">
    J'ai tout lieu de supposer que c'est la ligne header nécessaire à GD, et mise au début, qui provoque l'embrouille ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: image/png"); //la ligne qui change tout !
    Y a-t-il une solution? mettre un nouvel header quelque part? lequel? quelle écriture?

    Je vous remercie. Bonne journée.

    Marcel Marie

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    1) Il est normal que ça ne soit pas pris en compte.
    La fonction imagecopymerge() permet d'appliquer un filtre alpha lors de la fusion, ce qui rend la fonction bien utile pour ajouter un filigrane par exemple, mais ne gère toujours pas le canal alpha des images fusionnées. En revanche, si tu te rends sur la page d'aide de cette fonction et que tu descends jusqu'aux commentaires, des solutions sont apportées pour gérer le canal alpha des images png.

    2) pas comprendre ! Tu essayes de générer une page web et les images qu'elle contient dans un même script ?

    De mémoire, il existait une méthode pour écrire le "code" de l'image directement dans le script HTML, mais ce n'est pas la bonne façon de faire. Il te faut 2 pages, une pour ton script HTML, l'autre pour ton image. Chaque script ne peut recevoir qu'un et un seul header, évidement, puisque le header est une sorte d'introduction qui dit de quoi on va parler... et on ne peut pas rajouter une nouvelle introduction au milieu d'une dissertation !


    page1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo '<img src="./image.php" />'; ?>
    image.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    header("Content-type: image/png");
    $img = imagecreatetruecolor(100, 100);
    [...]
    imagepng($img);
    ?>

  3. #3
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut
    Tu essayes de générer une page web et les images qu'elle contient dans un même script ?
    OUI, ou plutôt l'inverse : je crée toutes mes images et ensuite, quand c'est fini, je veux m'en servir dans une page web.

    Comment enchainer ces deux choses sans avoir à relancer la page web séparément ?.
    C'est vraiment "casse-pied" que dans du PHP on ne puisse pas lancer directement du .php ou de l'htm.
    Cela me parait toutefois un peu curieux que l'on ne puisse pas changer de "header".
    Au fait quelle est l'écriture du "header" pour un php "normal" sans GD.

    Je vous remercie.
    MarcelMarie

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    - Soit tu créés toutes tes images, tu les enregistres dans un repertoire et les appels normalement dans une balise html <img>

    - soit tu génères tes images "à la volée", c'est a dire que tu mets dans le lien de l'image l'adresse d'un script PHP qui construira l'image a chaque appel (visiblement la solution qu'il te faut).

    Toute autre méthode est mauvaise !

    Lancer du HTML dans du PHP ne veut rien dire... PHP sert à générer du HTML (entre autre, puisqu'en l'occurrence, on s'en sert aussi générer des images). En revanche, on peut lancer du .php dans du php (include(), require(), eval()), mais cela n'a rien à voir avec ton problème.

    Bref, je pense que tu n'as pas compris comment cela devait marcher (la 1er réponse que je t'ai donnée est toujours bonne). Donc étape par étape, ce qu'il se passe :

    1) Tu appels ta page PHP qui génère du code HTML (travail d'apache sur le serveur)
    2) Le serveur envoie le code HTML au client qui l'interprète et l'affiche (travail du navigateur coté client)
    3) Lors de l'interprétation du HTML, le navigateur trouve des balises <IMG> indiquant ou télécharger l'image à afficher ( la propriété src de la balise img). En l'occurence, l'url de l'image est http://monserver.com/image.php (cf mon 1er exemple)
    4) Le serveur (Apache) reçoit l'ordre d’exécuter image.php... Il l'execute et génère ton image qu'il renvoie au client...
    5) le navigateur du client affiche l'image renvoyé par le serveur

    Pour le header, non, on ne peut pas le changer une fois qu'il a été envoyé... Header, ça veut dire "entête"... La transmission des données du serveur vers le client étant séquentielle, une fois envoyé, on ne peut en aucun cas le modifier. C'est tellement vrai que si tu laisses juste un espace blanc entre le début de ton fichier php et la balise <?php, il t'enverra une erreur.

    Et pour finir, je ne connais pas la teneur exact du header par defaut (mais ça doit être du genre Content-type: text/HTML).

  5. #5
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut
    Tout cela est intéressant certes.
    On peut toutefois dire que le PHP est assez déroutant.
    Je peux effectivement créer mes images avec GD, à part, avant de lancer le script PHP et HTML qui les traite.
    Je dois aussi pouvoir choisir, selon la date, dans le script complet, de traiter l'une ou l'autre des parties car, pour moi, les images restent "valables" tout le mois calendaire.

    On peut quand même être étonné
    * que dans le script de création d'image l'instruction echo ; ne se comporte pas comme dans du PHP normal

    * que la séquence HTML soit vue/lue comme du texte et affichée à l'écran alors que ce n'est jamais le cas lorsque le fameux header de GD n'est pas utilisé.

    Bon, je vais faire avec, c'est-à-dire contourner l'obstacle.
    Je vous remercie. Bon week-end.

    Marcel Marie

  6. #6
    Membre actif
    Homme Profil pro
    retraité, ex chef de projets en informatique
    Inscrit en
    Juillet 2005
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité, ex chef de projets en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2005
    Messages : 602
    Points : 249
    Points
    249
    Par défaut les neurones du VIEUX réactivés
    Bonjour,

    Eh oui, cette histoire de header() m'a turlupiné.
    Celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: image/png"); //la ligne qui change tout !
    Alors cette nuit des neurones se sont réactivés !!!!.
    Je me suis souvenu qu'il y a un certain temps j'avais réalisé ceci :
    http://www.touteladanse.com/danse_affiche.php

    Quelle différence?
    Aucune!! tout simplement ce dernier programme n'a pas le "fameux" header() et n'affiche rien directement à l'écran via la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagepng($imr); // affichage image à l'écran
    Ce qui veut dire que le header() ne sert que si on veut afficher une image créée à l'écran. Détail qui m'avait échappé et oublié

    CQFD. Mon problème est donc résolu.
    Bonne journée. Merci.

    Marcel Marie

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

Discussions similaires

  1. [CSS] Voici un menu déroulant en PNG transparent tout en CSS
    Par Zial dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 08/04/2006, 21h43
  2. Réponses: 8
    Dernier message: 29/01/2006, 16h48
  3. [support de navigateur] IE + PNG + Transparence = :S
    Par PoZZyX dans le forum Webdesign & Ergonomie
    Réponses: 3
    Dernier message: 23/11/2005, 17h24
  4. Utilisation de HTML::Parser
    Par mobscene dans le forum Web
    Réponses: 6
    Dernier message: 27/10/2005, 13h57
  5. utilisation <form> html ?
    Par t671 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 23/10/2005, 14h17

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