IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupérer image BLOB [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut Récupérer image BLOB
    Bonjour,
    je sais que je suis la nième personne à poster ce même sujet!
    J'ai trouvé pas mal de solutions sur le net mais aucune d'elles
    ne marche.

    Donc j'ai un champ BLOB dans ma table personne qui
    est situé au 5 ème ROW (4 si on commence le comptage
    de l'index 0).

    Je désire juste récupérer une photo, par exemple, de la personne
    dont l'id est 184.

    Je dispose du fichier php suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $mysql_host = "myhost";
    $mysql_database = "mabase";
    $mysql_user = "username";
    $mysql_password = "password";
    $con = mysql_connect($mysql_host,$mysql_user,$mysql_password);
    $db =  mysql_select_db($mysql_database);
    	if ((!$con)&&(!$db)){
    		die('Could not connect: ' . mysql_error());
    		}
    		else echo "connected";
     
    $query = " SELECT * FROM personne WHERE id_personne=184 ";
    $res=mysql_query($query);
    header('content-type: image/jpeg');
    print imagejpeg(imagecreatefromstring(mysql_result($res, 4, "personne_image")));
    Merci d'avance!!!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    Tu utilises mal mysql_result : le deuxieme argument est le numero d'enregistrement, pas la position du champ.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Merci pour ta réponse!
    L'enregistrement est à la première position, donc j'ai modifié
    et j'ai mis à 0 et à 1 et ça marche toujours pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print imagejpeg(imagecreatefromstring(mysql_result($res, 0, "personne_image")));
    Y a-t-il une autre solution?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    et avec un simple echo ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = " SELECT personne_image FROM personne WHERE id_personne=184";
    $res=mysql_query($query);
    $row = mysql_fetch_array($res);
    header('content-type: image/jpeg');
    echo $row['personne_image'];
    si ca ne marche pas, enleve le header pour voir ce que retourne le echo.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Ca ne donne rien...

    Par contre, à partir de mon exemple, si j'enlève le "header", le echo donne des lignes de caractères bizarres (ASCII je pense)!

    bizarre...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourrais-tu nous dire precisemment ce que ca fait quand "ca ne marche pas" ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Oui ... j'ai mis une capture de la page web quand elle n'affiche rien.
    Images attachées Images attachées  

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    tu peux nous montrer comment tu stockes les images dans la base ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    C'est une base que j'ai récupéré... c'est pas moi qui la stocke... par contre je t'ai mis une capture d'écran lorsque j'enlève le header (pour te montrer qu'il arrive à la lire quand même mais pas à la décoder).
    Images attachées Images attachées  

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu pourrais faire un dump de la table avec juste une seul image et nous le mettre ici ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Oui bien sûr!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    -- phpMyAdmin SQL Dump
    -- version 2.11.4
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generation Time: Mar 16, 2009 at 02:05 PM
    -- Server version: 5.0.67
    -- PHP Version: 5.2.8
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Database: `mydatabase`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Table structure for table `fiche_personne`
    --
     
    CREATE TABLE `fiche_personne` (
      `id_personne` bigint(20) NOT NULL default '0',
      `image_personne` blob NOT NULL,
      PRIMARY KEY  (`id_personne`),
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
     
    --
    -- Dumping data for table `fiche_personne`
    --
     
    INSERT INTO `fiche_personne` VALUES(30, 0x733a343132373a22ffd8ffe000104a46494600010100000100010000fffe003e43524541544f523a2067642d6a7065672076312e3020287573696e6720494a47204a50454720763632292c2064656661756c74207175616c6974790affdb004300080606070605080707070909080a0c140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232ffc0001108009600db03012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f7fa28a2800a28a2800a28a2800a28a2801b24891466491d511792cc70054297f6729023ba81f3d36c80d50f1349e5f87ae8f72157f3615e715e26659b4b07555351bdd5cedc3611568393763d7410c320823d8d2d7912bb27dd665fa1c54163a9eb506af7a1aeee85b304311f34e071c80335cf4f88a124dca16b79ff00c03a639539293535a2bfe27b2515e553eb1ae49b3c8d66e2003ef6155b77fdf40d493f8f2f7498e14babc1217c282f1024fb9c01fe4d6f0cfb0d3b2e577f4ff8242caab4aca0d36fa2bdff0023d468af3f3e3abdb73189d2d8f98c1172a464fe06ac2fc428e39447710db863fc226c1cfd0d6d0ceb092ead7c998ff67623a46e7714572d1f8ded8ffacb3957fdd607fc2b4349f115beb1772dbc36d728634de6470bb4f38c0c1ce7f0ae9a398616b49429cd36cc6586ab14dc9688d9a28a2bb4c028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a0028a28a00c1f176efec16c74f3173cf6ff38af3faef3c5b384b386165c8959864b60038e09fceb8252ac81d595949c02181af8acf9df15a74497ebfa9ed65e9fb2f98b48cbb90a825723191d4558b3b56bcb811290bc6493d8550d72d4a5a5d42d70d098c13e629c6303f9578f1a6dd9bd9bb1df4dc655153bea1fbbb0b225e476489092eed9638f5359b7474bbe4d2ef2f2e12272ad27d9e5f4ce064fe19ac8d32cf5bf144296b1b62d21c09256e07e3dd8fb5767a87846db52b78119a55f248e898217be33c741fe7a57ad4f2fa91d5eeefaae9fe677579e1f035942b55f7eeefcbd15bafadcce16fa7789163b41705904818f9246e5c7b7e34977e178ad2f56ce0d1cdc5bb903ed2d201d7d7bd76fa56936b0a8b6d3ade188aaf030149e9d4f53daad5d58ea51b2a25b9258e0321dc3f1f4af4a195c29d3f8dbd7a7fc03c3fedaad19f2d04d43a26edf3d2c7336fe1a6b5b616f05d30dbc86752db7e99ebf4aeb7c236d3dbc73f9f74d724aae19e3452bd78f978c55fb7d117629b8762d8f9954f19f63d6b4a1b686df2218c267ae2bd4c2e029519f3c558f32ae32bd64d5477bf92fcec4b451457a273851451400514514005145140051451400514525002d1494b400514525002d1494500715e3bd1e5d6e6b2b6f3e4860557326c23e604af078f6fd6b83d6ad2df42bd86d74ff0ff00992f0d0dcf9ccd9e30d91d8e7fc6bd5f56479af9238d4b109d07d4d626bba1dc0852751b981db81e95e463e8354ea5484799bff863d3cbf339d2a91a53fe1abe97695df5766aff003d2c73ba44d2c5710bcbb95db01d50e719edd39149e2ed1def2de5c4a23495970ddb77607eb597ab5e6b16464b7d3f4d93cd5505aeb613b33d876cfbd58b58f55d5e4b66f107951fd91bcc4848c0908c7ccf838cf718f7af9ca341c616a8ecef75e5f267b2a94a94a38c538a5daf77dd597f9fcce8b40d3ffb2744b4b001a495179551f3331249c0fc7f215d1a68324ea1a694c479c28edee707fc2a7d12347f325214b0c0538e456c57d8c28a71b4b547ca4aa4aad475a5f149b6fe656b3b416b6c9093bfcb042b630719ab3ce7da9692b78c5455909bb8b4514550051451400514514005145140051451400514514005252d14009452d14005252d14009452d140183aa68fa95cdeb5cd95f4285b0364f1b3aaa81cf008ce7deb35ac756b15806a37b15d2b1219917660f2785e800181f85761587e2395963b744c0662c43119190071f8e6b8ebc214a0ea6bdff136e794e3ececbeefd7739bbed3a124cd24927ef1d46e53d0e41c7e98fc68b84b49e6818e72ac14aa8e39e4022a79757b68b4d125d9431210e51dc2e30791cfbff2aa8fa6cd771bdf5bb7970cab9b72dfc0c7907d4ff9c5799568c2a5dd05177b36bbebdff135a5cdca9d56d2574bfaf43b4d26058ed03e3e67e7f0abf597e1e8a5874a4594ae4b16003138cf5193ef9ad4cd7b545de09b56395a49d90514330552cc40006493dab0ee3c5da4db45248d396442406543b49f407a66b4e65751eac7184a6ed15766ed154ed6ea6beb686e1216812440f8987ce323d01e3f3fc2ad818ea727d69f5b09a69d98b45145020a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a4a5a2800ae6bc4b079d3c2c7cb22342d8707d7d41e3a574b581ac2acb7651d559428182323d6b8332fe0346949da5739db4b633db35cb461a4762eaaeec467f13c0f6ab844c000100909c6e6ce3a75e3356800060700552b8d520b760bcc848ea84103ebcd7891ad2a50f8adf246d28fb595ed70b2d4357b4f2ec2297cc8e1014cce83e6efcfbd32e35bba83527b7b49e1597ca32b16f9ba75247d48fceb36ff0056bffb149e5d84f36e3b4790a4360fe3c7d7355bc3f3698bac25b30b5f3c9669610cacc7b9418f4eff004f6acfda559c62d4e5befae877430f78caaca3b74567f37ff0d6372fd22b9d30dd6a77135e48d2985618dc84071c90a0f3c7f3fc6b0fc3da44de1f567d40a5e5ada486e2054e00700820e79e38f5e40af49b216af115861c22b6e1b97bfb55393c2ba3496cf01b24daddf24907d466bdda185929426a5f3d7eff003bfa9cf4b1d3845d26ed17f87a6d639dbef88a164b6874ed3e49a676c4ab3031e3a74fd79c576d04865855db6648fe06dc3f3ef5c6dafc35b14919af6feeae94904203b07e3c93fcaba1b5d02d74fb989ec00b5897ef471e7e7fae4e3d39c678eb5ed621d1e54a92d7faeffe418c783e551c3eebaebafdeff435a8a28ae63cf0a28a2800a28a28012968a2800a28a2800a4a5a28012968a28012968a280128a5a4a002b9bd5ee2386e669656c28207e95d2d798eafa82dd6ab74e25e16468d4291ea41cfeb5e3e755fd95156ddb3ab0b45d59792247d4639d25f3de72a5be548f0063b64d685b25b3400428132a1b1804807ebf4ae7c3eeb407cb0559b2b2fafb0353fdac051126523200719cd7cf60f1aa94dcaa2be9f3fbcedc4615ce3cb0d35357500f3d8af948eeccea06c6181ce093cf4154ad347d2f4395eea2899e795b92a9bdb2dd860640fd2ad7daf36fe55b4124d95c062b81f8d56bcb39ee34fb59d6e648e381834a8303cf4fee9c76edf4cd7aff5aa0eaf3eeedabe9a7e673508558c3d93972c5bd7cfd7faea6e784e04d13c3932ac5243e6dcc92471c8db8807155afb5cb9d3264f241667e5b278fcab35757b83f2416ea140c05009c7a74a99acee751b5569c797321c2923191ef5c75f1eea5a3876df2edfa9aba7294dd4c4753aeb1d6a3b98626954a3380723a56a57176169f63b7d85b731392474aec607325bc6ec30594122bddcbf133ad1b54dce0ab15193e5d892929692bd133168a28a0028a28a004a5a28a004a5a28a0028a29280168a4a5a0028a28a004a5a4a28016b8bd6f44d0f4cbb867874987cf9598b3ac609c9efcfd4fe75d9d72fe29559ee608cb146401b7e3a0248ebf8571e3a528d07286fd0da84dc65cb7693dec660b5b795d0193c84eaaacb84f5e98c5325b558ef255fb342c8e84861d06074e3f9d4ad25b5b224aa85d8f0187cc7ebfcaa2d34ccf0c8f21c924911e00af179a94eaa538a52deeb5fbefdfc8d3df54db4f4f32de9fe1e3a843248f33c7bf9c2e307279c7e95bd06830411ac624631af0062b9f867fb3da2cb106518c90ac7e5f5fcab4ecb5a70e4348275ee01c915df87c3e12365657b2319d6a92f8af6b9a89a4daa291b49fc7153ad95b2f4853a63919aad6fab432c9b1d4c649c293d3ffad5a19af4614a92f862bee33e6bf52acda7dbcc4129b48feef19ab4000001c01451571a718b6d2dc2e2d252d1560145251400b4525140052d251400b45252d001451450014514500145145001451450015cdeb10a5c6a4df2ca1d147cca081d3d7a77ae928ae7c4d0f6d0e5bd8a8cb95dcf3ebf4b981bcc83ccf2b6e18039c7bfafa554b0b6b992390c33f96adc1e393f4af4878629411246ac0f0432e6b86d434f9e0d71decd3645bfa2e0281e98af031d817466ab3bca3d95d5affa1d942b270f67a27dfbd8a971a6ea72dbdac76b7896ad1cc1a528321d31c8231c9f6e05681b4b7b795648ed4bb3139208f97f026ae8ac9bfd716cee7c948bcdc0f98eec7e1d2a66a0dc55b45b7723db4dc797d7f1efd4abe2ab992cf4b8ef23b9787ecf3c723846c19101c15fc73fa575be1ad66db53b3536d70b34479465fd41f43ed5c95d2da6bd66de6248d132949a34e59475047e38e6b6b468ad74e86dd6cedfc8850f09b769f7cf7cfd6bb638c71ab7b596855a8fd5630d79d37e967dfadeeb43b1a28a2bdc38828a28a0028a28a0028a28a0028a28a0028a4a5a00292968a004a2968a004a2968a004a2968a004a2968a004ae2f50bb9a696e561826525d956418e39eb8aed6b0a3f0e98e62c2f5ca12cdb1901e49cf5cf6ae2c6d0956492be9dadfa951972f438668b56b6f30ab49b990f2c491fa67155ed34cb9922926d4351591b772e41e33d001e98aefeef42ba68f16b73123e7aba1acd87c33a92ec8ee5edae2307ef191b3f9118af3bea5553d35f5ff0035fe46cabfb8e0d6fd56ff008991a25bc56f3c87ce0eee30a00fe1f53e95d25a5bfda6711eeda3192714c4f0fcb049e6244a4e72304003b54bf62bc8ce56270c3ba9ff000a50a338b5ed63a795c89357f77f13a11c0c52d737a6bdeff68c7e6437081b21d9d081c7b9ae92bdaa551548dd1934d6e2514b456a02514b45002514b45002514b4500252d1450014945140052d1450014945140051451400b45145002514514005145140051451400b45145001451450014514500252d14500252d14500145145007fffd9223b);

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En comparant avec une authentique image jpeg, j'ai remarqué qu'il y avait des caracteres en trop au début et a la fin.

    En les retirant, on obtient bien une image jpeg (bon l'enregistrement que tu m'as donné visiblement c'est une tache de vomi).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $query = "SELECT image_personne FROM test.fiche_personne WHERE id_personne=30";
    $res=mysql_query($query);
    $row = mysql_fetch_array($res);
    header('content-type: image/jpeg');
    $image = substr($row['image_personne'],8);
    $image = substr($image,0,-2);
    echo $image;
    Par contre je ne sais pas si le nombre de caractere est le meme dans tous les enregistrements.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Merci beaucoup, tu me sauves la vie!
    Effectivement, je m'en doutais bien ... c'était pas un problème d'extraction mais bien un problème de décodage de l'image...
    juste une petite question: comment t'as su qu'il fallait enlever certains caractères pour bien afficher l'image?

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En comparant avec une authentique image jpeg, j'ai remarqué qu'il y avait des caracteres en trop au début et a la fin.
    un jpeg commence par
    ÿØÿà
    le tiens fait comme ca
    s:4127:"ÿØÿà................................";
    le veritable code de l'image est donc entre les guillemets.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/01/2013, 11h01
  2. Réponses: 1
    Dernier message: 06/04/2009, 17h38
  3. [MySQL] Affichage d'image (blob)
    Par weejungle dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/11/2005, 13h38
  4. Récupérer un blob
    Par J-P-B dans le forum XMLRAD
    Réponses: 2
    Dernier message: 08/07/2005, 15h40
  5. [.NET][CR] Comment afficher une image blob dans un état ?
    Par moucrack dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/06/2005, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo