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

Signaler
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008
-
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

Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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.
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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 !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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 !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

Quelqu'un n'a pas une toute petite idée dans la direction vers laquelle je dois aller
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
moi franchement a part la troncature comme le disait ...

Si t'a besoin d'aide, MP !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

nicomilville, pourrais tu être plus précis SVP.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
une troncature de l'image a partir d'un certain nombre d'octet !!!

Si t'a besoin d'aide, MP !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

Ok.
Es-ce que tu connais un moyen de résoudre ce problème
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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 !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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 !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
je vois pas alors !!!

Si t'a besoin d'aide, MP !!!
Messages postés
23
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
24 avril 2008

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";
}
?>