Im chargement d'une image à partir d'une base de données SQL CE, puis tentative de chargement dans une PictureBox.Exception OutOfMemory lors du chargement d'une image dans .Net
Je sauve l'image comme ceci:
if (ofd.ShowDialog() == DialogResult.OK)
{
picArtwork.ImageLocation = ofd.FileName;
using (System.IO.FileStream fs = new System.IO.FileStream(ofd.FileName, System.IO.FileMode.Open))
{
byte[] imageAsBytes = new byte[fs.Length];
fs.Read(imageAsBytes, 0, imageAsBytes.Length);
thisItem.Artwork = imageAsBytes;
fs.Close();
}
}
puis sauver à l'aide de Db LINQ to SQL.
je charge l'image en arrière comme si:
using (FileStream fs = new FileStream(@"C:\Temp\img.jpg", FileMode.CreateNew ,FileAccess.Write))
{
byte[] img = (byte[])encoding.GetBytes(ThisFilm.Artwork.ToString());
fs.Write(img, 0, img.Length);
}
mais je reçois un OutOfMemoryException. J'ai lu que c'est un léger hareng rouge et qu'il y a probablement quelque chose qui ne va pas avec le type de fichier, mais je ne peux pas comprendre quoi.
Des idées?
Remerciements picArtwork.Image = System.Drawing.Bitmap.FromFile (@ "C: \ Temp \ img.jpg");
Quel est le type de cetItem.Artwork? Vous lui attribuez des octets dans le premier bloc de code, mais dans le second bloc de code, vous convertissez Artwork ToString, puis convertissez-le en octets. Pourquoi les conversions multiples? – dthorpe