imagejpeg(); J'veux les pixels...pas le code !

imagejpeg(); J'veux les pixels...pas le code ! - PHP - Programmation

Marsh Posté le 10-11-2005 à 17:59:33    

Bonsoir,
 
Je sèche sur un truc particulier :
Je génère une miniature "à la volée"...mais ça affiche du code au lieu de l'image  :??:  
script :  
header("Content-Type: image/jpeg" );
list($width, $height, $type, $attr) = getimagesize("$pic" );
echo "Type : $type<br>";
if($type == "1" )
{ $img_in = imagecreatefromgif($pic); }
 
if($type == "2" )
{ $img_in = imagecreatefromjpeg($pic); }
 
if($type == "3" )
{ $img_in = imagecreatefrompng($pic); }
 
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
 
$t = imagejpeg($img_out);
echo $t;

Fin du script


Message édité par shoshenk le 10-11-2005 à 20:07:32

---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 10-11-2005 à 17:59:33   

Reply

Marsh Posté le 10-11-2005 à 18:06:06    

Tout ça est inclu dans un autre fichier ?


---------------
2 * yo = yoyo
Reply

Marsh Posté le 10-11-2005 à 18:07:09    

2xyo a écrit :

Tout ça est inclu dans un autre fichier ?


Vi, c'est inclu via un include !


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 10-11-2005 à 19:07:32    

donc c'est normal que ça foire....
Pour afficher t'a miniature, i; faut dans le code HTML insérer une balise <img> avec pour adresse d'image, l'adresse de la page de ton script.


---------------
2 * yo = yoyo
Reply

Marsh Posté le 10-11-2005 à 20:04:39    

2xyo a écrit :

donc c'est normal que ça foire....
Pour afficher t'a miniature, i; faut dans le code HTML insérer une balise <img> avec pour adresse d'image, l'adresse de la page de ton script.


J'ai pas bien saisi...Je pensais que l'image générée venait du cache !
 
Bon, pour résoudre le pb du header, je fais en sorte qu'il puisse être rechargé soit :
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $timestamp).' GMT');
 
Maintenant, j'ai toujours le code de l'image et non son interprétation ??


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 10-11-2005 à 20:28:41    

Si je mets un echo "<IMG src=\"$t\">"; c'est encore pire ! (genre 2000 lignes de hiéroglyphes !)
Vais devenir chèvre, là ?!


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 10-11-2005 à 20:29:57    

2xyo a écrit :

donc c'est normal que ça foire....
Pour afficher t'a miniature, i; faut dans le code HTML insérer une balise <img> avec pour adresse d'image, l'adresse de la page de ton script.


Tu peux me refaire l'explication avec une ligne de code ? Je pige pas bien la démarche...


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 10-11-2005 à 23:30:54    

up


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 11-11-2005 à 01:01:37    

shoshenk a écrit :

Tu peux me refaire l'explication avec une ligne de code ? Je pige pas bien la démarche...


 
Faut le faire avec 2 fichiers. Le index.php qui contiendrait <img src=miniature.php />
 
Je vois pas pourquoi ça marche pas déja ... Pê tente de remplacer
 

Code :
  1. $t = imagejpeg($img_out);
  2. echo $t;


 
par  

Code :
  1. imagejpeg($img_out);


 
Je l'ai fait cet aprèms justement en modifiant le script fournit sur http://developpeur.journaldunet.co [...] ture.shtml


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 11-11-2005 à 10:15:17    

Ricco a écrit :

Faut le faire avec 2 fichiers. Le index.php qui contiendrait <img src=miniature.php />
Je vois pas pourquoi ça marche pas déja ... Pê tente de remplacer

Code :
  1. $t = imagejpeg($img_out);
  2. echo $t;


par  

Code :
  1. imagejpeg($img_out);


 
Je l'ai fait cet aprèms justement en modifiant le script fournit sur http://developpeur.journaldunet.co [...] ture.shtml


J'avais essayé de remplacer l'echo...sans succès !
Par contre, je vais tester le code de ton lien ; sous forme de fonction, ça risque d'être interprété correctement...et puis, y'a apparement pas le problème d'entête !


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 11-11-2005 à 10:15:17   

Reply

Marsh Posté le 11-11-2005 à 10:36:02    

Ils ne l'ont pas mis mais perso j'ai rajouté un header dans mon script.
Mais quand tu dis que ça t'affiche du code ... tu veux dire du php ou le binaire de l'image ? Dans ce cas là t'es sur que y'a pas d'autres messages d'erreur php au milieu qui t'empêchent d'afficher l'image ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 11-11-2005 à 11:26:11    

Dans l'absolu, un fichier php peut retourner de facon brute une image, sans devoir passé par un parser html qui s'occuperais de lancer le script php. Pour cela, il suffit juste de redirigé le flux des données de l'image (la fonction echo tout simplement) vers le navigateur, et bien sure, ne pas avoir omis les en-têtes Content-Type.
NOTE : Un espace avant <? ou après ?> pose problème quand à l'interpretation des données, attention.
 
Low

Reply

Marsh Posté le 11-11-2005 à 13:18:49    

lowcraft a écrit :

Dans l'absolu, un fichier php peut retourner de facon brute une image, sans devoir passé par un parser html qui s'occuperais de lancer le script php. Pour cela, il suffit juste de redirigé le flux des données de l'image (la fonction echo tout simplement) vers le navigateur, et bien sure, ne pas avoir omis les en-têtes Content-Type.
NOTE : Un espace avant <? ou après ?> pose problème quand à l'interpretation des données, attention.
 
Low


 :cry: J'comprends vraiment pas  :cry:  
 

Code :
  1. $thumbnail = imagejpeg($img_out);
  2. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $timestamp).' GMT');
  3. header("Content-Type: image/jpeg" ); ?>
  4. <?=$thumbnail;


ça renvoie toujours le binaire de l'image !!!

Message cité 1 fois
Message édité par shoshenk le 11-11-2005 à 13:20:36

---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 11-11-2005 à 13:46:30    

shoshenk a écrit :

:cry: J'comprends vraiment pas  :cry:  
 

Code :
  1. header("Content-Type: image/jpeg" );
  2. imagejpeg($img_out);


 
ça renvoie toujours le binaire de l'image !!!


 
Ca vient surement d'aileurs alors ...
Et quand tu sauvegarde la page dans un fichier jpeg ça donne bien l'image que tu veux ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 11-11-2005 à 14:09:38    

Reply

Marsh Posté le 11-11-2005 à 14:21:28    


J'ai "nettoyé" les blancs  ;)  : Toujours le binaire...
Je vais faire une page à part pour ce code et l'inclure dans ma page principale !


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 11-11-2005 à 16:02:43    

Ok, j'ai pris exactement le code de phpteam et ça marche !!!
En fait, il faut appeler l'image générée comme ceci :
<IMG src='miniature.php'>
 
Je vais tester un <IMG src='$thumbnail'>


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 14-11-2005 à 16:45:27    

shoshenk a écrit :

Ok, j'ai pris exactement le code de phpteam et ça marche !!!
En fait, il faut appeler l'image générée comme ceci :
<IMG src='miniature.php'>
 
Je vais tester un <IMG src='$thumbnail'>


ça marche toujours pô ! J'abandonne ; je vais me contenter de "resizer" l'image en plus petit...
Les problèmes de header déjà envoyés (en l'occurence session_start dans mon cas) sont bloquants !


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 14-11-2005 à 17:26:39    

shoshenk a écrit :

Ok, j'ai pris exactement le code de phpteam et ça marche !!!
En fait, il faut appeler l'image générée comme ceci :
<IMG src='miniature.php'>
 
Je vais tester un <IMG src='$thumbnail'>


 
:heink: heu $thumbnail c'est pas l'image elle-même dans ton cas ? <img> c'est du html, c'est le navigateur qui s'en occupe. C'est censé contenir le nom du fichier dans lequel est l'image, donc ta page PHP. Pas le contenu de l'image elle-même.
Quand tu fais <img src="miniature.php"> le browser va afficher l'image générée par miniature.php
Quand tu fais <img src="$thumbnail"> le browser va recevoir  <img src="ÿØÿàJFIF......."> c'est à dire le contenu de l'image plutôt que son nom

Message cité 1 fois
Message édité par antp le 14-11-2005 à 17:28:31

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-11-2005 à 11:02:40    

antp a écrit :

:heink: heu $thumbnail c'est pas l'image elle-même dans ton cas ? <img> c'est du html, c'est le navigateur qui s'en occupe. C'est censé contenir le nom du fichier dans lequel est l'image, donc ta page PHP. Pas le contenu de l'image elle-même.
Quand tu fais <img src="miniature.php"> le browser va afficher l'image générée par miniature.php
Quand tu fais <img src="$thumbnail"> le browser va recevoir  <img src="ÿØÿàJFIF......."> c'est à dire le contenu de l'image plutôt que son nom


Yep...Suis d'accord !
Si je fais appel à une page qui génère ma miniature, j'ai un problème de header (une session est lancée dans la page principale)...


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 15-11-2005 à 11:10:09    

Reply

Marsh Posté le 15-11-2005 à 15:36:34    

antp a écrit :

Je vois pas le rapport :??:


Moi non plus,  :D mais c'est ce qui fait que le binaire de l'image s'affiche au lieu de l'image !!! (et je pense que c'est dû au header qui ne se charge pas)


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 15-11-2005 à 15:39:46    

T'as deux choses :
- la page php qui génère du html qui contient le <img src="...">
- la page php qui génère l'image
j'ai l'impression que tu mélanges les deux d'après les quelques bribes de code postées, et surtout quand tu dis  

Citation :


En fait, il faut appeler l'image générée comme ceci :
<IMG src='miniature.php'>
 
Je vais tester un <IMG src='$thumbnail'>


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-11-2005 à 17:06:21    

Citation :

Ce soir, je vais acheter du lait et du produit vaiselle, mais attention, les deux dans la même bouteille. Mais Y a pas de crainte à avoir, je ferais le tri chez moi.


Zut, alors, moi, je sais pas séparer les deux si on me les met dans la même bouteille.
 
Ben en fait, le navigateur, il est comme moi, le navigateur si tu lui mélanges du texte et le contenu d'un fichier d'image il saurat pas t'afficher l'image vu qu'il ne peut pas deviner où commence et finis une image et où commence et finis du simple texte. C'est pour ça qu'il faut lui envoyer séparément la page html et le texte. Dans la page html, t'utilises la balise qui permet d'indiquer qu'on veut afficher une image à cet endroit là de la page (la balise <img> ) et dans cette image, tu lui indiques que l'image se trouves à telle adresse (adresse du script qui génére et envoie l'image et rien que l'image, aucune autre texte)

Reply

Marsh Posté le 16-11-2005 à 00:40:15    

J'avais bien compris antp et omega2...
Ce qui me pose réellement des pb, c'est le header !
Dans ma page "image" (celle qui contient l'image générée), il y a un header type jpeg...
Dans ma page "html" (celle qui affiche la source), il y a un session_start()
C'est là que ça cloche et vu que les deux sont indispensables...je bloque !? (voilà pourquoi je me contente maintenant de resizer l'image d'origine)


---------------
===   [ACH] M42 // Tamron SP // Matos de studio  ===   Achats Matos PC  ===
Reply

Marsh Posté le 16-11-2005 à 10:51:58    

Je vois pas le problème. Y'a un header différent pour chaque fichier php, ça pose pas de pblm.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 16-11-2005 à 11:38:52    

shoshenk a écrit :


Dans ma page "image" (celle qui contient l'image générée), il y a un header type jpeg...
Dans ma page "html" (celle qui affiche la source), il y a un session_start()
C'est là que ça cloche et vu que les deux sont indispensables...je bloque !?


 
:heink: bah c'est deux pages différentes, je vois pas le problème... rien ne t'empêche de faire un session_start dans la page "image" en plus du header jpeg si t'en as besoin


Message édité par antp le 16-11-2005 à 11:39:13

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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