-
Affichage d'images BLOB
Bonjour,
J'ai un gros soucis avec l'affichage d'images qui se trouvent dans ma base. Elles sont stockées au format BLOB (je sais qu'il y a beaucoup mieux comme option mais c'est indépendant de ma volonté, je ne peux pas changer ça) et lorsque je souhaite les afficher, impossible d'obtenir l'image correcte.
Par exemple cette image (désolé pour la taille et la qualité) :
http://nsa01.casimages.com/img/2008/...0441983638.jpg
Avec comme outils :
-PHP : 5.2.1
-PhpMyAdmin : 2.9.2
-MySQL : 5.0.22
Donne ceci :
http://nsa01.casimages.com/img/2008/...1081983645.jpg
Avec ces outils :
- PHP : 5.2.5
- PhpMyAdmin : 2.6.0-pl3
- MySQL : 5.0.22
Comme on voit pas bien, je peux dire qu'en gros, le coin en haut à gauche correspond à l'image de départ mais que le reste, c'est pas ça du tout...
D'où cela peut venir ? De la manière dont phpMyAdmin encode ces images dans la base ou de la manière dont je les fait afficher (je transfère le contenu du BLOB dans un fichier avec fwrite sous php pour le faire afficher dans une balise <img ...>).
Merci pour votre aide car j'ai parcouru beaucoup de forums pour voir comment utiliser les BLOB (j'ai essayé de faire afficher directement le BLOB avec "header('Content-type:image/jpeg')", j'ai essayé avec un script d'envoi du BLOB mais rien n'y a fait, soit je n'ai rien du tout, soit j'ai le contour de l'image avec la fameuse croix rouge, soit j'ai l'image "déformée".
De plus, le stockage et l'affichage des images fonctionnent sur d'autres serveurs tournant sous les mêmes environnements (seules les versions des applications utilisées diffèrent).
Merci.
-
Bonsoir,
J'ai essayé de manipuler des images en utilisant d'autres outils. J'ai installé pour faire cela EasyPHP qui utilise ces outils :
- PHP : 5.2.0
- PhpMyAdmin : 2.9.1.1
- MySQL : 5.0.27
Les images sont correctement enregistrées et correctement affichées.
Pensez-vous qu'un tel problème puisse provenir de la manière dont PhpMyAdmin est configuré (fichier de configuration) ?
Sinon, d'où cela peut-il venir ? PHP ? MySQL ?
Merci d'avance pour le moindre conseil ou l'aide que vous pourrez m'apporter.
-
juste une idée comme ca : ca pourrait etre le type champ blob qui n'est pas assez grand pour enregistrer ton image en entier, tu coup, les données seraient tronquées.
donc le navigateur recoit le début du fichier lui indiquant ses dimensions, il s'attend à recevoir une quantité X de données, qui commencent à arriver (donc il commence à afficher l'image), puis les données se tarissent et la ... c'est le drame ... ! :aie:
Ca n'a peut être rien à voir, mais ça mérite quand même d'être vérifié ...
Pour info, il semble que les blobs soient limités à 64 Ko , ce qui n'est pas énorme pour une image, avec une photo ca peu vite atteindre la limite ...
Quoiqu'il en soit, il vaut mieux enregistrer l'image sur le système de fichier local, et son chemin dans la base de données ...
Edit : si ton traitement php est long, ca pourrait aussi être le timeout d'éxécution défini dans le php.ini qui arrive à son terme et qui coupe ainsi brutalement l'envoi des données ... ?
-
Bonjour et merci pour cette réponse.
Pour ce qui est de la taille du champ BLOB de ma base, que ce soit sur mon serveur ou en local avec EasyPHP, elles est définie à MEDIUMBLOB (les images que l'on doit insérer dans la base sont des imagettes de petite taille donc c'est suffisant).
Pour ce qui est du traitement PHP, j'ai modifié dans le php.ini les valeurs des variables max_execution_time (essai à 600 au lieu des 30 par défaut) et max_input_time (essai à 600 au lieu de 30) et rien n'y a fait, ça n'a rien changé dans l'affichage de mes images...
Mon problème ne vient pas du fichier de configuration de PhpMyAdmin, je l'ai comparé avec celui du PhpMyAdmin d'EasyPHP, ils sont identiques.
Alors peut-être que c'est la version de PhpMyAdmin que j'utilise qui gère mal les BLOBs.
Sinon, j'ignore vraiment d'où cela peut venir...
Est-ce que si j'utilise le PhpMyAdmin d'EasyPHP (version 2.9.1.1) cela peut régler mon problème ? Dans ce cas là, comment modifier la version sur mon serveur ? Un copier/coller pour remplacer mes fichiers suffira-t-il ?
EDIT : Je viens de copier le PhpMyAdmin de mon serveur (2.9.2) à la place de celui d'EasyPHP (2.9.1.1) et ça fonctionne, les images s'affichent correctement... Je suis vraiment perdu et je ne sais plus si ça vient de PhpMyAdmin, de PHP, de MySQL ???
J'ai copié le PhpMyAdmin d'EasyPHP à la place de celui de mon serveur, toujours le même problème pour l'affichage des images, ça ne change rien.
Merci pour votre aide.
-
phpmyAdmin n'a rien a voir la-dedans !
Ce n'est qu'une interface pour gérer ta base de données MySQL, ça n'a aucune influence sur tes applications.
La conf MySQL peut être, mais certainement pas celle de phpMyAdmin !
-
Donc il n'est pas possible qu'il y ait une erreur de phpMyAdmin lors de l'insertion d'images dans la base (lors de l'encodage de l'image) ?
Si c'est une erreur de MySQL, comment se fait-il qu'avec les mêmes versions on ai deux résultats différents ? Cela ne peut que provenir du fichier de configuration non ?
-
J'ai fait différents test pour savoir d'où vient l'erreur mais j'obtiens toujours le même problème, l'image que je teste est toujours mal affichée.
J'ai copié le dossier "mysql" d'EasyPHP à la place du dossier d'installation de MySQL de mon serveur, j'ai fait la même chose avec PHP et même problème.
Par contre dans l'autre sens (dossiers du serveur à la place de ceux d'EasyPHP) ça fonctionne ! Les images sont gérées correctement et s'affichent bien.
Je vais devenir fou je pense...
La seule solution serait peut-être la réinstallation de tout mon serveur depuis le départ... Qu'en pensez-vous ?