GD : Affichages IE et firefox ? [Résolu]

Signaler
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
-
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
-
bonjour,

afin de generer des miniatures a la volee sur mon site web j'ai cree la petite fonction suivante :
function creerMiniature($dossier, $img) {
    list($width, $height) = getimagesize($dossier."/".$img);
    if ($width < $height) $new_width = 144;
    else $new_width = 191;
    $new_height = $height * $new_width / $width;
    // Redimensionnement
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($dossier."/".$img);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    // Ecriture physique de l'image
    $eclatDossier = explode("_", $dossier);
    imagejpeg($image_p, "_miniatures/".$eclatDossier[0].$img);
    //call_user_func("_miniatures/".$eclatDossier[0].$img, $image_p, $dossier."/".$img);
    imagedestroy($image_p);
}

tout se deroule super sur mon IE6.
parcontre, sur firefox2 se code me renvoit un page web vierge avec l'url inscrit en haut a gauche. et ce qui me parrait encore plus invraissemblable c'est que lorsque je regarde le code source de cette page vierge, il est structure de la maniere attendue.

autremenent dit, sur firefox l'afichage se fait comme si mon code source etait : "<html>http://www.monsite/mapage.php</html>"
mais quand je regarde le code source genere je constate qu'il est structure de la maniere attendue.

SAVEZ-VOUS CE QU'IL SE PASSE AVEC FIREFOX ET COMMENT CORRIGER SE PROBLEME D'AFFICHAGE ?

merci a vous,

alonsyl

9 réponses

Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
7
bon ben enlève le alors.... parce qu'enfait là tu essaye de dire au navigateur qu'une source HTML est une image, alors que lui s'attends à un codage jpeg.....

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Ouais, t'as pas bien compris.

Ton script envoie au navigateur une image. C'est cette ligne là :

imagejpeg($image_p, "_miniatures/".$eclatDossier[0].$img);

L'exécution de ce script, et donc l'affichage de l'image, est indépendant de l'affichage de la page.

Rajoute donc la ligne qu'on t'a donnée (avec jpeg et pas jpg pour faire plaisir à IE) dans ton script, juste avant d'envoyer l'image.

function creerMiniature($dossier, $img) {
list($width, $height) = getimagesize($dossier."/".$img);
if ($width < $height) $new_width = 144;
else $new_width = 191;
$new_height = $height * $new_width / $width;
// Redimensionnement
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($dossier."/".$img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Ecriture physique de l'image
$eclatDossier = explode("_", $dossier);
header('Content-Type: image/jpeg');
imagejpeg($image_p, "_miniatures/".$eclatDossier[0].$img);
//call_user_func("_miniatures/".$eclatDossier[0].$img, $image_p, $dossier."/".$img);
imagedestroy($image_p);
}

Faut pas tout mélanger quoi...
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
rhaaaaaaaaa

Ta page web et ton image sont deux choses différentes !
La page web contient un lien vers une image.
L'image est générée par un script AUTONOME, qui ne génère QUE l'image.
Le header avec le type mime (image/jpeg) doit donc être envoyé avant l'image, indépendamment de la page web.

J'ai l'impression que tu mélanges un peu les deux, ce qui te conduis à faire quelque chose qui n'a pas de sens...
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Est-ce que tu as pensé à envoyer au navigateur l'entête qui va bien ?

header('Content-Type: image/jpg');

Sans ça, le navigateur ne sait pas ce qu'il doit faire de ce qu'il reçoit. Là, on lui dit que c'est une image de type jpg.
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
7
Hello ;)

est-ce que tu envoi l'image à partir d'un scripte PHP vers le navigateur????
parce que si c'est la cas il faut que tu fasse apparaître ça:
<hr size="2" width="100%" />header ("Content-type: image/jpeg");  
<hr size="2" width="100%" />tout au début de ton script sinon le navuigateur ne sais pas que type de données lui arrivent.....

c'est le seul truc qui me vienne à l'espris comme ça.....
si le tout est en ligne quelquepart ben donne nous un lien, on ira voir ;)

allé!! bonne chance

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
Messages postés
681
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
21 août 2014
7
petit détail:

pour que ça marche sous IE il faut utiliser Content-type: image/jpeg et pas Content-type: image/jpg, sinon il râle....
-> http://pear.php.net/bugs/bug.php?id=4586

désolé pour le double post.... avais pas réactualisé avant de poste et était parti depuis quelques minutes

<hr size="2" width="100%" />Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
<hr size="2" width="10" />
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
j'ai bien mis le header avant meme mon "<html>" d'ouverture.

voici un lien vers la page :
http://www.raphaelalonso.com/beberic/index.php

merci a vous,

alonsyl
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
merci de vos reponses qui m'ont deja permises d'identifier le pbl !

cependant, permettez-moi d'entrer un peu dans le detail de ma page web.
elle est concue de la maniere suivante :
1) code html (pour la baniere et la mise en forme)
2) creation de la liste de choix (chaque item corespondant a 1 repertoire de photos)
3) si 1 item de ma liste de choix a etait selectionne :
    while (il y a des photos dans le repertoire designe) {
        si la photo n'a pas de miniature {
            j'en cree une via creerMiniature()
        }
    }
    j'affiche la miniature avec 1 lien sur l'image

au depart, je mettais mon header avant le 1).

vous m'avez fait corriger mon code pour que je le mette dans "creerMiniature()" mais j'avais un msg d'erreur me specifiant que le header etait deja definit. je suppose que ca doit etre le cas lorsque j'ai plusieurs miniatures a creer au chargement de ma page.

j'ai donc decide de mettre mon header avant le "while" mais voici le msg d'erreur :
Warning: Cannot modify header information - headers already sent by (output started at /home.31/r/a/p/raphaela/www/beberic/index.php:6) in /home.31/r/a/p/raphaela/www/beberic/index.php on line 66
(la ligne 66 est bien la ligne de mon header)

SAVEZ-VOUS OU JE DOIS PLACER MON HEADER ?
DOIS-JE PENSER A CONCEVOIR MA PAGE DIFFEREMMENT ?

merci a vous,

alonsyl    
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
6 novembre 2008
12
bon ben j'ai fais se que vous m'avez indique (mettre le script de conception des miniatures dans 1 page distincte) et ca marche parfaitement !

merci a vous ;-)

alonsyl