SQL CE 데이터베이스에서 이미지를로드 한 다음이를 PictureBox에로드하려고합니다..NET에서 이미지를로드 할 때 OutOfMemory 예외가 발생했습니다.
나는이 같은 이미지를 저장하고 :
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();
}
}
다음 SQL에 LINQ를 사용하여 DB에 저장.
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);
}
을하지만,에서 OutOfMemoryException을 얻고있다 :
그래서 같은 이미지를 다시로드합니다. 나는 이것이 약간의 붉은 청어이고 아마도 파일 형식에 문제가있을 것이라고 읽었지 만, 나는 무엇을 할 수 없는지를 잘 알고있다.
아이디어가 있으십니까?
감사합니다. picArtwork.Image = System.Drawing.Bitmap.FromFile (@ "C : \ Temp \ img.jpg");
thisItem.Artwork의 유형은 무엇입니까? 첫 번째 코드 블록에서 바이트를 할당하지만 두 번째 코드 블록에서는 Artwork ToString을 변환하고이를 바이트로 변환합니다. 왜 여러 번 전환합니까? – dthorpe