bonjour,
comment enregistrer une image dans une base access et la recharger après?
apparament il faudrait passer par du binaire mais je ne comprend pas trop le truc
merci
bonjour,
comment enregistrer une image dans une base access et la recharger après?
apparament il faudrait passer par du binaire mais je ne comprend pas trop le truc
merci
après il faut avoir un champ dans la table de type tableau d'octets (je ne sais pas si ca existe sous access (ca l'est sur sql serveur en tout cas)
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 Public Function ImageToByteTab(ByVal image As System.Drawing.Image) As Byte() Try Dim m As New System.IO.MemoryStream image.Save(m, System.Drawing.Imaging.ImageFormat.Png) Return m.GetBuffer Catch ex As Exception Return Nothing End Try End Function Public Function ByteTabToImage(ByVal Bytes() As Byte) As System.Drawing.Image Try Return System.Drawing.Image.FromStream(New System.IO.MemoryStream(Bytes)) Catch ex As Exception Return Nothing End Try End Function
Dans access, il n'y a pas de champs "BLOB". Il existe un champs pour les textes de grandes tailles, mais son utilisation avec du binaire n'est pas garantie. (de plus il est indexable, ce qui est largement sous optimal).
Sinon, il y a les champs OLE qui doivent pouvoir être utilisés pour cet usage.
????
Asc est une fonction qui renvoie le code asc d'un caractère.
Si je traduis bien tu veux suggérer plutôt l'inverse de ce que tu dis : changer le binaire en texte, par exemple avec un truc du style :
Et relire en reconstituant les byte à partir des codes ascii stockés entre deux "_" .
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 byte[] buffImage; // Charger buffUImage ici //.... StringBuilder imageInChar = new StringBuilder(); foreach(byte b in buffImage) { imageInChar.Append("_"); imageInChar.Append(b); } String valueToWrite = imageInChar.ToString(); // ecrire dans la BD ici // .....
C'est possible, quoique très lent (et très très crade).
Partager