Bonjour à tous,

Cela fais maintenant 3h que je cherche désespérément une solution à mon problème et toujours rien.

J'ai ajouté dans dans une base Access 2003 (via Access) une image PNG dans un champ de type OLE Object. Depuis access, j'arrive parfaitement à ouvrir le fichier.

Seulement maintenant, je dois récupérer cette image par le code. La galère commence. En effet quand j'utilise le datareader, il me retourne bien un byte[] sauf qu'il contient tout un tas d'information sur l'objet OLE (le type, la taille et j'en passe). J'aimerai savoir si d'une manière simple et rapide, il y a la possibilitée de connaitre la longueur de ces informations pour en extraire seulement mon image.

J'ai utilisé une méthode barbare pour retrouver cette taille (voir le code ci dessous)
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
 
        public static int GetOffset(byte[] p_byte)
        {
            int offset = 0;
            MemoryStream memStr = null;
            Bitmap bmp = null;
            while (bmp == null && offset < p_byte.Length)
            {
                try
                {
                    memStr = new MemoryStream();
                    memStr.Write(p_byte, offset, p_byte.Length - offset);
                    memStr.Flush();
                    bmp = new Bitmap(memStr);
                    memStr.Dispose();
                }
                catch (Exception)
                {
                    offset += 1;
                }
                finally
                {
                    if (memStr != null)
                    {
                        memStr.Close();
                        memStr.Dispose();
                        memStr = null;
                    }
                }
            }
            return offset;
        }
Ce code est tout sauf conventionnel.

Auriez vous une solution à mon problème.

Merci d'avance