Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1410 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Image non reconnue, enregistrement uniquement en BMP !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Image non reconnue, enregistrement uniquement en BMP !

n°854226
Jerome608
Posté le 20-09-2004 à 16:47:42  profilanswer
 

Bonjour à tous.
 
Après moult recherches, je me permets de m'adresser à vous car j'ai quelques difficultés avec un script php que j'ai écrit.
Ce script sert à redimensionner une image et écrire un texte dessus si la session du visiteur qui l'appelle n'est pas correcte.
Le script marche bien, mais malheureusement, on ne peut pas enregistrer l'image qu'il génère autrement qu'en BMP ni connaitre son poids.
Je ne sais pas d'où ça vient, car j'ai bien mis le header et sur mon site, il y'a un autre script (utilisant la bibliothèque JPGraph) qui génère des images reconnues en JPEG, je ne vois pas la différence entre les 2.
 
Voici mon script :

Code :
  1. <?
  2. // Définition de la sortie renvoyé au browser
  3. header("Content-type: image/jpeg" );
  4. // Création de la session
  5. session_start();
  6. // PARTIE AFFECTATION DES VARIABLES
  7. /* déclaration de variables */
  8. require "../common/config.php";
  9. /* Connexion avec MySQL */
  10. @mysql_connect ($host,$user,$pass);
  11. @mysql_select_db("$bdd" );
  12. // Données liées à l'image
  13. $ID=0;
  14. $cat=0;
  15. $ID=$_GET['ID'];
  16. $SID=$_GET['S'];
  17. @$query = "SELECT * FROM asp_images WHERE imgCode='$ID'";
  18. @$result = mysql_query($query);
  19. @$row = mysql_fetch_array($result);
  20. // Test sur l'existence de l'image
  21. if (!$row)
  22. {
  23. $src_im = ImageCreateFromJpeg("$adresse/images/gui/main_part/logo_ASP.jpg" );
  24. $black = imagecolorallocate($src_im, 0, 0, 0);
  25. ImageString($src_im,5,0,0,"Image inexistante sur le site...", $black);
  26. imagejpeg($src_im);
  27. } else {
  28. @$imgUrl= mysql_result($result,0,"imgUrl" );
  29. // Test sur la validité de la session
  30. if ($SID<>$_SESSION['session'] || !$SID)
  31. {
  32. $size = GetImageSize($imgUrl); 
  33. $src_w = $size[0]; $src_h = $size[1]; 
  34.     // Teste les dimensions tenant dans la zone
  35.  
  36.     // Crée une image vierge aux bonnes dimensions
  37.    $dst_im =  imagecreatetruecolor(500,375);
  38.    // Copie dedans l'image initiale redimensionnée
  39.    $src_im = ImageCreateFromJpeg($imgUrl);
  40.    ImageCopyResampled($dst_im,$src_im,0,0,0,0,500,375,$src_w,$src_h);
  41.    ImageDestroy($src_im);
  42. $white = imagecolorallocate($dst_im, 255, 255, 255);
  43. $black = imagecolorallocate($dst_im, 0, 0, 0);
  44. ImageString($dst_im,4,10,345,"Image disponible en $src_w x $src_h sur $adresse", $black);
  45. ImageString($dst_im,4,12,343,"Image disponible en $src_w x $src_h sur $adresse", $white);
  46.    Imagejpeg($dst_im);
  47. } else {
  48. // readfile("$imgUrl" );
  49. $dst_im = ImageCreateFromJpeg($imgUrl);
  50. Imagejpeg($dst_im);
  51. }
  52. }
  53. // Suppression de la session du serveur
  54. session_destroy();
  55. ?>


 
Merci d'avance à ceux qui auraient des idées pour m'aider ! :hello:


Message édité par Jerome608 le 29-09-2004 à 16:58:02
mood
Publicité
Posté le 20-09-2004 à 16:47:42  profilanswer
 

n°854317
PunkRod
Digital Mohawk
Posté le 20-09-2004 à 18:15:01  profilanswer
 

as tu essayé sur d'autres machines ?
 
à tout moment c'est IE qui bug.  
 
pour en être sûr : vide les fichiers internet temporaires, et retente de sauvegarder ton image.

n°854329
Jerome608
Posté le 20-09-2004 à 18:26:24  profilanswer
 

Merci de ta réponse.
 
J'ai essayé sur la machine de mon travail, sur mon PC personnel ainsi que sur celui d'un ami. :( Le résultat est toujours identique.
 

n°854331
Jerome608
Posté le 20-09-2004 à 18:29:11  profilanswer
 

Je viens à l'instant d'effacer mes fichiers temporaires, et le résultat est le même.
Si je clique droit sur l'image et que j'en demande les propriétés, j'ai :
Type : non disponible
Taille : non disponible
Dimensions : 1024x768
 
et si je veux l'enregistrer, au lieu de proposer le nom de l'image, j'ai "Sans Titre", en BMP. :S
 
Sur mes images générées avec JPGraph, tout ceci fonctionne.

n°854394
PunkRod
Digital Mohawk
Posté le 20-09-2004 à 21:00:49  profilanswer
 

Bon pas d'autres propositions, je connaissais ce bug là uniquement...
 
Me suis pas encore essayé à manipuler les images en php.
 
Bon courage :)

n°854685
Jerome608
Posté le 21-09-2004 à 11:35:06  profilanswer
 

Merci :)
 
bon, bah j'ai bien peur que ça en reste là... tant pis... :(

n°854779
Jerome608
Posté le 21-09-2004 à 13:06:02  profilanswer
 

Après recherche, j'ai trouvé ça :
 

Citation :

jpg files are typically encoded in a three-channel, RGB format. It is possible, in some programs, to create .jpg files that are encoded in four-channel, CMYK color format (cyan, magenta, yellow, and black used in four-color printed reproduction). Importantly, Windows is unable to display .jpg files that are not in three-channel, RGB color format under all circumstances - they will work in standard view, but functions such as thumbnail won't work."  This interesting problem may also prevent pictures from being saved as JPG (only BMP) will be available, and weird effects when trying to print 4 channel jpgs.


 
c'est peut-être ça le problème ? Mais alors, comment savoir si mes images sont bien en RGB ou si elles sont en CMYK ??? et comment changer la config' ??? :(

n°860087
Jerome608
Posté le 29-09-2004 à 15:26:39  profilanswer
 

Bonjour à vous...
 
je poursuis mes recherches, mais sans succès hélas. :(
 
J'ai modifié mes en-têtes, mais ça n'a rien donné, je ne récupère même pas la taille du fichier, je ne comprends pas :
 

Code :
  1. <?
  2. // Création de la session
  3. session_start();
  4. // Définition de la sortie renvoyé au browser
  5. header("Content-Type: image/jpeg" );
  6. header("Content-Length: $imgPoids" );
  7. header("Content-Disposition: inline; filename=file.jpg" );
  8. // HTTP/1.1
  9. header("Cache-Control: no-store, no-cache, must-revalidate" );
  10. header("Cache-Control: post-check=0, pre-check=0", false);
  11. // HTTP/1.0
  12. header("Pragma: no-cache" );
  13. etc... ?>


 
là, je dois avouer que je cale. :(

n°860242
Jerome608
Posté le 29-09-2004 à 16:57:13  profilanswer
 

Ca y est, j'ai résolu mon problème, merci à ceux qui ont réfléchi à mon problème.
 
j'ai mis ça comme header :

Code :
  1. <?
  2. // Création de la session
  3. session_start();
  4. // Définition de la sortie renvoyé au browser
  5. Header("Content-Disposition: inline; filename=image.jpg" );
  6. Header("Content-Type: image/jpeg" );
  7. Header("Content-Length: $imgPoids" );
  8. Header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  9. Header('Pragma: public');
  10. Header("Expires: 0" );


 
et ça marche !
 
Exemple ici : http://weaky.free.fr/php/galeries/ [...] &ID=PHO030 (en théorie, si vous cherchez à enregistrer, ça sera en Jpg, et si vous faites un click droit, vous voyez le nombre d'octet !)
 
voili voilou. ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Image non reconnue, enregistrement uniquement en BMP !

 

Sujets relatifs
[SQL] Comment éviter une division par 0 (zéro) --> résolu par DECODE()[Java] Mettre une image en background + boutons par-dessus.
Enumérer les entrés d'un CHECK ... IN [Résolu][RESOLU] différence $langue et $_SESSION['langue']
[Résolu] Un mysql_fetch_object avec un champ texteScript perl cgi [Resolu]
fonctions et imageEcriture dans un fichier : erreur de retour à la ligne [résolu]
[background-image] Problème d'inclusion d'image (chemin)[Résolu] Executer du javascript...
Plus de sujets relatifs à : [RESOLU] Image non reconnue, enregistrement uniquement en BMP !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR