OVH Cloud OVH Cloud

Récupération d'une image à partir d'une base de données

24 réponses
Avatar
Christelle
Bonjour

J'ai stock=E9 des images dans ma base de donn=E9es sql server.
J'arrive =E0 r=E9cup=E9rer l'image dans un variant de type Byte.=20
Mais je n'arrive pas =E0 l'afficher dans mon PictureBox.

Pouvez-vous m'aider ?

Merci d'avance pour votre aide

Christelle

10 réponses

1 2 3
Avatar
Christophe QUEVAL
Pouvez-vous envoyer un morceau de votre code ?

"Christelle" a écrit dans le message
de news:87de01c43270$198cf290$
Bonjour

J'ai stocké des images dans ma base de données sql server.
J'arrive à récupérer l'image dans un variant de type Byte.
Mais je n'arrive pas à l'afficher dans mon PictureBox.

Pouvez-vous m'aider ?

Merci d'avance pour votre aide

Christelle
Avatar
christelle
C'est le code qui me permet de récupérer l'image à partir
de la base.

Merci

Dim Image As Variant
Set cn = New ADODB.Connection
cn.Open "driver={SQL Server};" & _
"serverÞV;" & _
"Trusted_Connection=Yes;" & _
"databaseÞv"
Set rs = New ADODB.Recordset
rs.Open "SELECT * " & _
"FROM " & CnstTab_TGraphiqueCasIDA & " " & _
"WHERE " & CnstTabCol_GCI_NumCas & " = 10 AND "
& CnstTabCol_GCI_NumOrdre & " = 1" _
, cn, adOpenKeyset, adLockOptimistic

'Set mstream = New ADODB.Stream
'mstream.Type = adTypeBinary
'mstream.Open
Image = rs.Fields(2).Value


rs.Close
cn.Close

-----Message d'origine-----
Pouvez-vous envoyer un morceau de votre code ?

"Christelle" a


écrit dans le message
de news:87de01c43270$198cf290$
Bonjour

J'ai stocké des images dans ma base de données sql server.
J'arrive à récupérer l'image dans un variant de type Byte.
Mais je n'arrive pas à l'afficher dans mon PictureBox.

Pouvez-vous m'aider ?

Merci d'avance pour votre aide

Christelle


.



Avatar
Jean-Marc
"christelle" a écrit dans le message de
news:855e01c43274$95a2dc10$
C'est le code qui me permet de récupérer l'image à partir
de la base.

Merci



Hello Christelle,

pour faire ce que tu veux, il faut utiliser les fonctions GetDIBits et
SetDIBits.

L'utilisation est simple, mais le code est un peu long pour le poster ici.
J'ai mis sur le net un petit exemple d'utilisation (j' utilise une base
access, mais l'important n'est pas la.) =>
//membres.lycos.fr/jeanmarcn/PictureFromDB/
Il suffit de cliquer sur le lien pour récupérer le zip.


Sinon pour la doc:
dans MSDN, la doc des GetDIBits et SetDIBIts :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_0qk3.asp

et sur AllApi.net, la doc pour VB:
http://www.mentalis.org/apilist/GetDIBits.shtml

Bonne prog!

Jean-Marc
Avatar
c
Avatar
c
désolée de poster ici mais je ne vois pas comment créer un nouveau sujet
Quelqu'un peut m'aider
l'option nouveau ne fonctionne pas.
Avatar
ng
Salut,

Pourquoi ne pas utiliser ton client de news (par défaut Outlook Express) :

news://msnews.microsoft.fr/microsoft.public.fr.vb

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

c a écrit :

désolée de poster ici mais je ne vois pas comment créer un nouveau
sujet. Quelqu'un peut m'aider ?
l'option nouveau ne fonctionne pas.


Avatar
Christelle
Merci

Mais cela ne fonctionne pas avec une base sql server.
Y a-t-il une autre solution ?
D'avance merci

Christelle

-----Message d'origine-----
"christelle" a écrit


dans le message de
news:855e01c43274$95a2dc10$
C'est le code qui me permet de récupérer l'image à partir
de la base.

Merci



Hello Christelle,

pour faire ce que tu veux, il faut utiliser les fonctions


GetDIBits et
SetDIBits.

L'utilisation est simple, mais le code est un peu long


pour le poster ici.
J'ai mis sur le net un petit exemple d'utilisation (j'


utilise une base
access, mais l'important n'est pas la.) =>
//membres.lycos.fr/jeanmarcn/PictureFromDB/
Il suffit de cliquer sur le lien pour récupérer le zip.


Sinon pour la doc:
dans MSDN, la doc des GetDIBits et SetDIBIts :

http://msdn.microsoft.com/library/default.asp?


url=/library/en-us/gdi/bitmaps_0qk3.asp

et sur AllApi.net, la doc pour VB:
http://www.mentalis.org/apilist/GetDIBits.shtml

Bonne prog!

Jean-Marc



.



Avatar
Jean-Marc
"Christelle" a écrit dans le message de
news:8b5501c432b5$2aa5b9f0$

Mais cela ne fonctionne pas avec une base sql server.
Y a-t-il une autre solution ?
D'avance merci



Hello,

Si, ça fonctionne avec une base Sql Server.

Le tout est de stocker dans un champ définit de manière adéquate, et de
récupérer de même. Le programme que j'ai donné en exemple ne sert qu'à
montrer comment on utilise GetDIBits et SetDIBits, et ce fonctionnement est
indépendant de la base.

Il est possible que AppendChunk et GetChunk ne fonctionne pas avec Sql
Server (je n'en sais rien) mais là encore, peu importe. Le tout consiste à
stocker en binaire les data du controle Picture avec GetDIBIts, puis de les
relire, puis de les utiliser avec SetDIBits.

Toute base de données qui sait stocker du binaire dans un champ (un memo en
Access, un BLOB ou CLOB avec Oracle ou DB2, le type IMAGE en Sql server)
peut donc être utilisée.

Je ne vois pas d'autre solutions portables (indépendante de la base) pour
Sauver/Restaurer proprement une image dans une DB. Mais peut être existe
t'il des fonctions natives de SQL Server pour faire ça?

Jean-Marc
Avatar
ThunderMusic
bonjour,
si mon image était au départ un jpg, comment puis-je faire? puisque les
entêtes de fihiers ne sont pas du tout les mêmes. Je suis capable d'aller
chercher les données du fichier aussi, mais je ne connais ni la largeur, ni
la hauteur de l'image, ni les bitmap bits... J'utilise déjà ces images dans
des scripts ASP et PHP, mais je suis incapable de les utiliser en VB.

Merci pour votre aide.

ThunderMusic

"Jean-Marc" wrote in message
news:40990cd2$0$21670$
"Christelle" a écrit dans le message de
news:8b5501c432b5$2aa5b9f0$

>Mais cela ne fonctionne pas avec une base sql server.
>Y a-t-il une autre solution ?
>D'avance merci

Hello,

Si, ça fonctionne avec une base Sql Server.

Le tout est de stocker dans un champ définit de manière adéquate, et de
récupérer de même. Le programme que j'ai donné en exemple ne sert qu'à
montrer comment on utilise GetDIBits et SetDIBits, et ce fonctionnement


est
indépendant de la base.

Il est possible que AppendChunk et GetChunk ne fonctionne pas avec Sql
Server (je n'en sais rien) mais là encore, peu importe. Le tout consiste à
stocker en binaire les data du controle Picture avec GetDIBIts, puis de


les
relire, puis de les utiliser avec SetDIBits.

Toute base de données qui sait stocker du binaire dans un champ (un memo


en
Access, un BLOB ou CLOB avec Oracle ou DB2, le type IMAGE en Sql server)
peut donc être utilisée.

Je ne vois pas d'autre solutions portables (indépendante de la base) pour
Sauver/Restaurer proprement une image dans une DB. Mais peut être existe
t'il des fonctions natives de SQL Server pour faire ça?

Jean-Marc






Avatar
Jean-Marc
"ThunderMusic" a écrit dans le message de
news:%
bonjour,
si mon image était au départ un jpg, comment puis-je faire? puisque les
entêtes de fihiers ne sont pas du tout les mêmes. Je suis capable d'aller
chercher les données du fichier aussi, mais je ne connais ni la largeur,


ni
la hauteur de l'image, ni les bitmap bits... J'utilise déjà ces images


dans
des scripts ASP et PHP, mais je suis incapable de les utiliser en VB.

Merci pour votre aide.



Donc si je comprend bien, vous ne maitrisez pas la façon dont le fichier est
stocké dans le champ de la DB.
C'est un jpg, stocké tel quel. Est ce bien cela ?

Si oui, si le champ contient exactement le fichier jpg, alors j'ai bien une
idée....

Jean-Marc
1 2 3