Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9703

c# 画像をバイナリーデータとしてDBに保存する

$
0
0

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;
これで画像が表示できます。


Viewing all articles
Browse latest Browse all 9703

Trending Articles