Salvare e recuperare l’immagine (binaria) da SQL Server utilizzando Entity Framework 6

Sto cercando di salvare un’immagine bitmap nel database

Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width, pictureBoxMetroMap.Size.Height); 

Ho creato una colonna imgcontent nel database con datatype binary ma il mio problema è come posso convertire questo bitmap (mappa) in dati binari?

E come posso recuperare i dati dal database?

L’ho cercato su google e ho trovato qualcosa di simile ma non ha funzionato:

 byte[] arr; ImageConverter converter = new ImageConverter(); arr = (byte[])converter.ConvertTo(map, typeof(byte[])); 

Converti l’immagine in un byte[] e memorizzala nel database.


Aggiungi questa colonna al tuo modello:

 public byte[] Content { get; set; } 

Quindi converti la tua immagine in una matrice di byte e memorizzala come faresti con qualsiasi altro dato:

 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; } 

Fonte: il modo più veloce per convertire l’immagine in array Byte

 var image = new ImageEntity(){ Content = imageToByteArray(image) } _Context.Images.Add(image); _Context.SaveChanges(); 

Quando vuoi recuperare l’immagine, prendi l’array di byte dal database e usa il byteArrayToImage e fai ciò che desideri con l’ Image

Questo smette di funzionare quando il byte[] diventa grande. Funzionerà per file inferiori a 100 Mb