Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2011, 10h38   #1
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

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

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
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 :
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 :
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
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 14h26   #2
Membre confirmé
 
Développeur informatique
Inscription : décembre 2008
Messages : 344
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2008
Messages : 344
Points : 292
Points : 292
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 :
<?php echo '<img src="./image.php" />'; ?>
image.php :
Code :
1
2
3
4
5
6
<?php
header("Content-type: image/png");
$img = imagecreatetruecolor(100, 100);
[...]
imagepng($img);
?>
comode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 18h17   #3
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

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

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
Citation:
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
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 14h13   #4
Membre confirmé
 
Développeur informatique
Inscription : décembre 2008
Messages : 344
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2008
Messages : 344
Points : 292
Points : 292
- 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).
comode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 08h42   #5
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

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

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
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
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 11h01   #6
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

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

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
Par défaut les neurones du VIEUX réactivés

Bonjour,

Eh oui, cette histoire de header() m'a turlupiné.
Celle-ci :
Code :
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 :
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
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h39.


 
 
 
 
Partenaires

Hébergement Web