J'essaie de sauvegarder une image bitmap dans la base de données
Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width, pictureBoxMetroMap.Size.Height);
J'ai créé une colonne imgcontent
dans la base de données avec le type de données binary
mais mon problème est de savoir comment puis-je convertir ce bitmap
(carte) en données binaires?
Et comment puis-je récupérer des données de la base de données?
Je l'ai googlé et j'ai trouvé quelque chose comme ça mais ça n'a pas marché:
byte[] arr;
ImageConverter converter = new ImageConverter();
arr = (byte[])converter.ConvertTo(map, typeof(byte[]));
Convertir l'image en un byte[]
et le stocker dans la base de données.
Ajoutez cette colonne à votre modèle:
public byte[] Content { get; set; }
Puis convertissez votre image en tableau d'octets et stockez-la comme toute autre donnée:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Source: Le moyen le plus rapide de convertir une image en tableau d'octets
var image = new ImageEntity(){
Content = imageToByteArray(image)
}
_Context.Images.Add(image);
_Context.SaveChanges();
Lorsque vous voulez récupérer l’image, récupérez le tableau d’octets dans la base de données et utilisez le byteArrayToImage
et faites ce que vous voulez avec le Image
Cela cesse de fonctionner lorsque le byte[]
devient trop gros. Cela fonctionnera pour les fichiers de moins de 100 Mo