(.Net)Imageオブジェクトとバイト配列相互変換
(.Net,SQL)SQL Server 2005に画像データ(バイナリ)を保存したいの追加情報です。
この記事の最後のほうで、一時ファイルを使わずに直に Image とバイト配列に変換できる方法を探す と言ってましたが、@IT バイト配列→画像オブジェクト/画像オブジェクト→バイト配列の変換を行うには?で載ってました。
ということで下記のように(@ITのコードそのままですが)したら、DBへの保存とDBからの読み出しともにOKでした。
※picPohto1 はPictureBoxコントロール。
'保存'Imageをバイナリ(Byte配列)にコンバートする
Dim imgconv As New ImageConverter()
Dim byt1 As Byte() = CType(imgconv.ConvertTo(Me.picPhoto1.Image, GetType(Byte())), Byte())
'DataSetを使ってデータ挿入
Dim adp As DataSet1TableAdapters.CustomerTableAdapter = New DataSet1TableAdapters.CustomerTableAdapter();
adp.InsertQuery(1, "テスト太郎", byt1);
'読み込み
Dim tbl As New DataSet1.CustomerDataTable()
adp.FillByID(tbl, 1)
'DBにはバイナリ(Byte配列)なので、Imageにコンバートする
Dim imgconv2 As New ImageConverter()
Me.picPhoto1.Image = CType(imgconv2.ConvertFrom(tbl.Rows(0).Item("img")), Image)