DBに画像をバイナリーデータで保存する必要があったためのメモです。
なんだかんだ初ですのでちょっと沼りました。
ただの技術メモなのでご了承下さい。
使用DBはPostgreです。
それでは早速
下記が画像をDBに突っ込む過程です。
Bitmap bmp = new Bitmap(@"C:¥sample.jpg");
MemoryStream ms = new MemoryStream();
bmp.Save(ms,ImageFormat.jpeg);
byte[] binaryData = ms.ToArray();
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = 環境にあった設定
cmd.CommandText = ("INSERT INTO TableName (Column) VALUES (:binaryData)");
NpgsqlParameter param = cmd.Parameter,Add("binaryData",NpgsqlDbType.Bytea);
param.Value = binaryData;
cmd.ExecuteNonQuery();
Bitmap bmp = new Bitmap(@"C:¥sample.jpg");
Bitmapの引数に画像の場所を指定します。
MemoryStream ms = new MemoryStream();
メモリを使って読み取りなどできるやつです。
bmp.Save(ms,ImageFormat.jpeg);
Save(Stream, ImageFormat)
このイメージを、指定した形式で指定したストリームに保存します。
らしいですね。
バイナリーデータに変換します。
byte[] binaryData = ms.ToArray();
バイナリーデータを取り出します。
cmd.CommandText = ("INSERT INTO TableName (Column) VALUES (:binaryData)");
NpgsqlParameter param = cmd.Parameter,Add("binaryData",NpgsqlDbType.Bytea);
param.Value = binaryData;
こちらについてはルールっぽい?
sql実行するための準備ですね。
https://www.postgresql.jp/document/9.4/html/datatype-binary.html
絶賛学習中です。
cmd.ExecuteNonQuery();
sql実行。
続いて、バイナリーデータから画像表示です。
MemoryStream ms = new MemoryStream(binaryData);
Bitmap bm = new Bitmap(ms);
PictureBox.image = bm;
MemoryStream ms = new MemoryStream(binaryData);
先ほどのバイナリーデータをMemoryStreamで読んであげます。
Bitmap bm = new Bitmap(ms);
ビットマップに変換してあげます。
PictureBox.image = bm;
これで画像が表示できます。