ビットマップ画像をデータベースに保存しようとしています
Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width, pictureBoxMetroMap.Size.Height);
データ型imgcontent
でデータベースに列binary
を作成しましたが、このbitmap
(マップ)をバイナリデータに変換するにはどうすればよいですか?
また、データベースからデータを取得するにはどうすればよいですか?
私はそれをグーグルで検索し、次のようなものを見つけましたが、うまくいきませんでした:
byte[] arr;
ImageConverter converter = new ImageConverter();
arr = (byte[])converter.ConvertTo(map, typeof(byte[]));
イメージをbyte[]
に変換し、データベースに保存します。
この列をモデルに追加します。
public byte[] Content { get; set; }
次に、画像をバイト配列に変換し、他のデータと同様に保存します。
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;
}
ソース: 画像をバイト配列に変換する最も速い方法
var image = new ImageEntity(){
Content = imageToByteArray(image)
}
_Context.Images.Add(image);
_Context.SaveChanges();
画像を取得したい場合は、データベースからバイト配列を取得し、byteArrayToImage
を使用して、Image
で希望することを行います。
byte[]
が大きくなると動作しなくなります。 100Mb未満のファイルで機能します