Problème d'header content-type : image/jpeg

Problème d'header content-type : image/jpeg - PHP - Programmation

Marsh Posté le 22-11-2007 à 13:24:47    

bonjour
 
je vous explique mon problème :
 
dans une page j'ai une balise image avec dans scr un lien vers un fichier php qui génère un jpeg grace à header("Content-Type: image/jpeg" );
 
<img scr="preview.php">
 
 
Contenu du fichier preview.php :
 
<?
 
...traitement divers et long pour générer un jpeg ... (je ne décris pas le code ce n'est pas la peine)
 
header("Content-Type: image/jpeg" );
imagejpeg ($imd); //le jpeg générer plus haut se trouve dans $img
imagedestroy($imd);
 
?>
 
Donc avec ça, je n'ai pas de problème, ma balise image m'affiche bien mon jpeg. Mais comme le traitement pour générer le jpeg avant le header est long, mon image met du temps à s'afficher et j'aurais voulu qu'il y est un gif animé à la place le temps du traitement pour faire patienter puis l'affichage du jpeg une fois le traitement effectuer.  
Donc j'ai penser faire ceci :
 
<?
 
header("Content-Type: image/gif" );
readfile("images/wait.gif" ); //envoie avant traitement long du jpeg d'un gif animé pour faire patienter
 
...traitement divers et long pour générer un jpeg ... (je ne décris pas le code ce n'est pas la peine)
 
header("Content-Type: image/jpeg" );
imagejpeg ($imd); //le jpeg générer plus haut se trouve dans $img
imagedestroy($imd);
 
?>
 
Mais ça ne marche pas, il m'affiche bien le gif animé, mais ne m'envoie pas le jpeg quand il est prêt !
 
Est ce quelqu'un peut m'aider ?
 
Merci

Reply

Marsh Posté le 22-11-2007 à 13:24:47   

Reply

Marsh Posté le 22-11-2007 à 13:32:10    

je vois ce que tu veux faire, mais je pense qu'il ya plus simple en fait ;)
 
tu peux définir en CSS une classe pour les images que tu sais que ca va mettre un certain temps à d'afficher

Code :
  1. img.waitAnim {
  2.   background: transparent url(TON_ANIM.gif) no-repeat center center;
  3. }


 
Appliques cette classe aux images de ton choix et ca devrait le faire je pense :)


Message édité par SICKofitALL le 22-11-2007 à 13:32:29

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 22-11-2007 à 15:46:03    

haikai a écrit :

bonjour
Donc j'ai penser faire ceci :
 
<?
 
header("Content-Type: image/gif" );
readfile("images/wait.gif" ); //envoie avant traitement long du jpeg d'un gif animé pour faire patienter
 
...traitement divers et long pour générer un jpeg ... (je ne décris pas le code ce n'est pas la peine)
 
header("Content-Type: image/jpeg" );
imagejpeg ($imd); //le jpeg générer plus haut se trouve dans $img
imagedestroy($imd);
 
?>


N'hésite pas à revoir le fonctionnement du protocole HTTP...

Reply

Marsh Posté le 22-11-2007 à 19:36:02    

ça marche pas le CSS pour les images.
 
Sinon je vois pas ce qu'il y a comme problème avec mes header FlorentG
 
Ce que je cherche à faire c'est d'envoyer un premier header pour l'image d'attente, puis quand le traitement du jpeg est fini, d'envoyer le 2ème header pour ce jpeg

Reply

Marsh Posté le 22-11-2007 à 19:44:40    

On peut pas. Le protocole HTTP ne peut pas faire ça. Une fois le header envoyé, on peut plus y toucher, c'est logique.
 
Quand on envoit une image, ça donne à peu près :

Code :
  1. HTTP/1.1 200 OK
  2. Content-Type: image/jpeg
  3. <données de l'image>


On ne peut donc toucher aux headers par après, ça sera considéré comme du contenu par l'agent utilisateur

Reply

Marsh Posté le 22-11-2007 à 20:08:11    

haikai a écrit :

ça marche pas le CSS pour les images.

 

Sinon je vois pas ce qu'il y a comme problème avec mes header FlorentG

 

Ce que je cherche à faire c'est d'envoyer un premier header pour l'image d'attente, puis quand le traitement du jpeg est fini, d'envoyer le 2ème header pour ce jpeg


sisi ca marche, puisque je l'utilise très souvent sans soucis ;)

 

montre mon ton code please


Message édité par SICKofitALL le 22-11-2007 à 20:08:35

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 22-11-2007 à 20:35:03    

florentG à raison arrêté de cherche midi à 14h.
 
le fonctionnement du web c'est le client fait une demande le serveur repond. Le serveur ne peux pas envoyer 2 réponses pour une demande.
Sinon essaye avec de l'ajax tu pourra peut etre faire qqchose.


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed