Page 1 sur 1

Afficher une image stockee dans un BLOB MySQL

Posté : 14 nov. 2010, 13:44
par karibou57
Bonjour a tous,
Je ne parvient pas a afficher une image stockee dans un blob de ma table MySQL dont voici la structure
CREATE TABLE `tbl_images` (
  `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
  `image` blob NOT NULL,
  `extension` varchar(4) NOT NULL,
  `imageName` varchar(100) NOT NULL,
  `associatedAd` int(11) NOT NULL,
  `CreationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
)
J'essaye d'afficher une image avec le code suivant
$sql_grab_photos = mysql_query("SELECT * FROM tbl_images WHERE id='47'") or die("ERROR");
while ($result = mysql_fetch_row($sql_grab_photos)){
header ("Content-type: image/gif");
echo $result[1];
}
malheureusement ceci ne m'affiche qu'un code un peu etrange comme ci dessous
GIF89a00����η°��%���K�64��HGד�Ӵ�I��kLQz4��P��H�U�(��|U�Q% v��,S�Kg���Q>�������x��y�#�̆�J;6f���k�fU��qP�-6��2(X�--�C5x�r9���T&x�b]��#������hg��*��.X�w���݊�wz�eJ�Y��w�2,����VA������c��E��-����=2��0w ��#��k��g�!)��4���ɺ��,����).*i�}}ea�#~ ހ�Ƨ���"��\[��rr�]D6z���K����tQD�����11����bF��E�>F����RS�\b����E�D8x�Zv� �����*��œ����l���<��;���a�Z�������y*��4�ͻ�]^�u4��Xf�9�$*�W'��(���#�92�N2�|h�������dh�6/��s����Ԕ����u�F+��%k� �y�X\��K��ʠ�Q4������զ������CEAp�jr�����;��>?��/� '�K;��`k�G�V[��;g�D���`�����QL��!����JPc�b���XT��4�-6���LR��e��e���\�F8�j��b6�oO�'.��@5�ZI�� ...

Quelqu'un aurait il l'amabilité d'éclairer ma lanterne ca je sèche un peu ... beaucoup ! :oops:

Re: Afficher une image stockee dans un BLOB MySQL

Posté : 14 nov. 2010, 16:43
par xTG
Es-tu sûr et certain que l'image est entièrement enregistrée ? Qu'il ne manque pas la fin en gros.

Re: Afficher une image stockee dans un BLOB MySQL

Posté : 14 nov. 2010, 16:54
par karibou57
Salut,
Merci d'avoir jeté un oeil
J'avance un peu dans ma demarche l'image est bien dans la table
J'ai decouvert que le
header ("Content-type: image/gif");
etait mal situe et c'est ce qui me pose probleme


je sais qu'il faut placer le header avant tout autre texte j'ai essayer avec un code simple dans une page blanche cela fonctionne
mais ca ne semble pas marcher dans ma page complete impossible de mettre le header simple en haut de page

Y aurait il un autre moyen pour forcer ca ?

Re: Afficher une image stockee dans un BLOB MySQL

Posté : 14 nov. 2010, 18:25
par Ryle
La position du header n'a pas réellement d'importance, il faut juste que celui-ci soit appelé avant d'envoyer quoi que ce soit au navigateur.. Du coup, ça pourrait tout aussi bien être l'avant dernière ligne de ton code qu'il n'y aurait pas de problème du moment que tu n'affiches rien avant :)

Question bête déjà, l'image enregistrée est-elle bien au format gif ? (parce que si elle était en jpeg ou en png avant d'être stockée en base, elle va pas se transformer en gif toute seule ;))

De plus, comment ton image a-t-elle été stockée en base ? si tu l'as encodé à l'insertion, faut la décoder à la lecture :)

Re: Afficher une image stockee dans un BLOB MySQL

Posté : 15 nov. 2010, 13:00
par moogli
Salut,

Utilise imagecreatefromstring + imagegif afin d'afficher ton image.

Par exemple
<?php
// requete sql la reqsourve du queru est retournée sans $req
$data =mysql_fetch_assoc($req);
$img = imagecreatefromstring($date['image']);
// tu peut utiiser une serie de if / elseif / else ou unnswitch pour trouver le type de l'image dynamiquemenr et ainsi envoyer le bon header et utiliser la bonne fonction image*
header('Content-type: image/gif');
Imagegif($img);
Imagedestroy($img);
?>
Voila comment tu faire (il faut bien sur utiliser une balise img <img src="afficheimage.php?id=42" /> et utilser $_GET['id'] pour la requete ;) )

@+

Re: Afficher une image stockee dans un BLOB MySQL

Posté : 22 avr. 2012, 12:43
par guest
Bonjour tout le monde,

Voici ma table
CREATE TABLE IF NOT EXISTS `vehiculessql` (
  `IDVEHICULE` smallint(4) NOT NULL DEFAULT '0',
  `GROUPE` varchar(50) NOT NULL DEFAULT '',
  `MARQUE` varchar(50) NOT NULL DEFAULT '',
  `MODEL` varchar(50) NOT NULL DEFAULT '',
  `TYPE` varchar(50) NOT NULL DEFAULT '',
  `ANNEE` smallint(4) NOT NULL DEFAULT '0',
  `COULEUREXT` varchar(50) NOT NULL DEFAULT '',
  `COULEURINT` varchar(50) NOT NULL DEFAULT '',
  `PORTES` varchar(15) NOT NULL DEFAULT '',
  `PLACES` tinyint(2) NOT NULL DEFAULT '0',
  `VITESSEMAX` varchar(20) NOT NULL DEFAULT '',
  `AVECPHOTOS` varchar(25) NOT NULL DEFAULT '',
  `COMMENTAIRES` longtext,
  `FAMILLE` varchar(50) NOT NULL DEFAULT '',
  `PHOTOS` longblob,
  `PH1` longblob,
  `PH2` longblob,
  `PH3` longblob,
  `PH4` longblob,
  `PH5` longblob,
  `PH6` longblob,
  PRIMARY KEY (`IDVEHICULE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ma page ou mon image doit s'afficher
<img src="voila.php?page='.$result['PHOTOS'].'" width="50"/>
et ma page qui contient le "script"
<?php


if(isset($_GET['page']))

    {
		
		$id  = intval($_GET["page"]) ;
		 
		
		include 'config/connexion.php';	
		
		
		$sql = "SELECT IDVEHICULE,PHOTOS FROM vehiculessql where IDVEHICULE=".$id;  

		
		$requete = mysql_query($sql) or die( mysql_error()); 
		

		 //affichage des données:
		if( $result = mysql_fetch_row( $requete ) )
		{
		
					
			if ( !$result[0] )
			{
			echo "Id d'image inconnu";
			}
			else
			{
			//on place ici le header et on lui donne le type d'image (jpeg, gif, png,...)
		
			header ('Content-type: image/jpg',true);
			
			header('Content-transfer-encoding: binary');
		
			//on affiche l'image
			$image = stripslashes($result[1]);
			
			$image = imagecreatefromstring($image);
			
			imagejpeg($image);
			
			}
		}

			//si l'id est mal passé en GET, on affiche un message
			else
			{
			echo "Mauvais id d'image";
			}
		
		

	}
 
?>
je ne parviens pas à voir mon image pourtant j'ai pensé à tout ...

Pouvez-vous m'aider SVP

En vous remerciant d'avance