Problème d'image suite à la récupération de la base de données

patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008 - 24 avril 2008 à 09:27
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008 - 24 avril 2008 à 15:02
Bonjour,

J'ai un problème pour récupérer mon image correctement suite à l'appel de ma base de données en SQL serveur.
En faite, je n'arrive pas afficher une image jpeg lorsque celle-ci est de grande taille. 
A partir de 5k, il m'affiche qu'une partie de l'image.
Si l'image est encore plus volumineuse alors, il ne me l'affiche pas du tout, malgré que l'on peut observer la taille visuelle de celle-ci.

Es-ce que quelqu'un pourrait m'aider SVP.

Voici donc le code que j'utilse:
1. dans un page image.php:
$conn = mssql_connect(' ', ' ', ' ');
mssql_select_db('[ ]', $conn);


if ( isset($_GET['id']) )
{
 $id = intval ($_GET['id']); $req "SELECT Img_Type, Cool_Photo FROM TCool WHERE Id_Cool ".$id;
 $ret = mssql_query ($req) ;
 $col = mssql_fetch_row ($ret);
 
 if ( !$col[0] )
 {
    echo "Id d'image inconnu";
 }
 else
 {
    header ("Content-type: image/".$col[0]); 
    echo $col[1];
 }
}
else
{   
 echo "Mauvais id d'image";
}
?>
2. dans une autre page php : j'appelle mon image

<?php       echo "";     ?>

Tout fonctionne avec une petite image de moins de 5K.

Merci d'avance.

19 réponses

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
24 avril 2008 à 09:41
ton champs Cool_Photo n'aurait pas une limitation en taille par pur hasard ?

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 09:47
Je ne pense pas car comme les images sont stockées dans un champs de type IMAGE et qui sont ensuite transformer en binaire.

De plus, je fais l'insertion des images via une console en Delphi et là, il n'y a pas de problème pour insérer et afficher l'image jpeg quelque soit sa taille.
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
24 avril 2008 à 09:59
Tu voyais ptet pas l'erreur a cause d'un troncage... c'est a ça que je pensais en te posant la question.

Et bien je donne ma langue au chat je sais pas

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 10:05
La bizarrie, c'est qu'en Delphi, cela fonctionne même si ce n'est pas le même code.
 
Alors Pourquoi pas en PHP

Comment je peux contrôler qu'il y a eu réellement troncage en PHP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 10:07
Salut,

Déja stoker une image dans une base de donnée dans un champs image ou blob ça prend beaucoup de place, le mieux ce serais de stoker l'image sur le serveur et de stoker le chemin de l'image dans un champs text ou varchar !!!

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 10:20
Pour répondre à ta curiosité nicomilville je vais t'expliquer pourquoi je veux utiliser cette méthode.

En faite, je réalise un programme en delphi que me permet de planifier des évenements futurs et donc les personnes extérieurs vont pouvoir consulter tous ces évenements en ligne.  Je veux pour cela agrémenter mes pages php avec des images et des champs de description concernant divers points.
Ensuite, ils pourront s'inscrire à l'évenement voulu.
Toutes les Insertions, Modifications, Suppressions se font via console Delphi. Comme ce n'est pas moi qui vais encodé tous ces evènements, je veux simplifier au maximum les enregistrements et que personne ne dois modifier mes pages php.

Concernant le poids, ce n'est pas un problème car après que l'évenement soit passé, il sera automatiquement détruit car dans ma table il y a un champ date.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 11:23
ok, tu n'étais pas obligé d'éveiller ma curiosité (c'était juste une remarque rien de plus, rien de moins) !!!

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 11:26
Quelqu'un n'a pas une toute petite idée dans la direction vers laquelle je dois aller
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 11:27
moi franchement a part la troncature comme le disait ...

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 11:29
nicomilville, pourrais tu être plus précis SVP.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 11:37
une troncature de l'image a partir d'un certain nombre d'octet !!!

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 11:38
Ok.
Es-ce que tu connais un moyen de résoudre ce problème
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 11:41
non, tu peut peut être vérifier sur la doc php si il y a une limite ou pas sinon fait comme je te l'ai dit, stocke le chemin vers l'image seuleument !!

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 13:58
Voici l'un des resultats que j'obtiens avec une ajoute de code dans ma page : image.php

<?php
$conn = mssql_connect('Localhost', 'monuser', 'monuser');
mssql_select_db('[mmm]', $conn);


if ( isset($_GET['id']) )
{
 $id = intval ($_GET['id']); $req "SELECT Plan_Photo FROM TPlanification WHERE Id_Planif ".$id;
 $ret = mssql_query ($req) ;
 $col = mssql_fetch_array($ret);
 
    if ( !$col[0] )
 {
    echo "Id d'image inconnu";
 }
 else
 {
 
    echo $col[0];
 }
}
else
{   
 echo "Mauvais id d'image";
}




$filename = $col[0];
$percent = 0.5;


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


//list($width, $height) = getimagesize($filename);
$width = 200;
$height = 200;
$new_width = $width * $percent;
$new_height = $height * $percent;


// Redimensionnement
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);


imagejpeg($image_p, null, 100);




?>

Avant pour cette image, je n'obtenais rien car trop importante
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 14:00
Mais hélàs, je ne récupère pas mon image en entier.

Une autre bizarrie, c'est quand je fais enregistrer la photo sous... . Lorsque je l'ouvre, je vois ma photo en entier.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 14:28
je vois le pb alors, ta photo est longue a charger et donc le navigateur l'afiche petit a petit et l'neregistre dans le cache pour que la prochaine fois que tu la met elle s'affiche plus vite, peut être !!!

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 14:35
Hélàs, ce n'est pas cela.  J'ai relancé le site mais rien de plus que ceux que tu peux observer sur image.  Avant la rajoute du code, je n'avais que la trace de la taille de image.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
24 avril 2008 à 14:50
je vois pas alors !!!

Si t'a besoin d'aide, MP !!!
0
patachon_76 Messages postés 23 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 15:02
J'ai fait le nettoyage du code et une seul ligne en plus me permet d'avoir cette effet (en vert)


<?php $conn = mssql_connect('Localhost', 'monuser', 'monuser'); mssql_select_db('[mmm]', $conn);


if ( isset($_GET['id']) )
{
 $id = intval ($_GET['id']); $req "SELECT Plan_Photo FROM TPlanification WHERE Id_Planif ".$id;
 $ret = mssql_query ($req) ;
 $col = mssql_fetch_array($ret);
 
    if ( !$col[0] ) {   echo "Id d'image inconnu"; }
 else
 {
   header('Content-type: image/jpeg'); echo $col[0]; 
   imagecreatefromjpeg($col[0]);
 
 }
}
else
{   
 echo "Mauvais id d'image";
}
?>
0
Rejoignez-nous