私はいたるところを見回しましたが、立ち往生しました(2日間グーグルで検索しているので、「lmgty」はやめてください)。c#.NET で画像を byte[] に変換したい場合、次のメソッドが見つかりました。
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
それは言う:スロー:「閉じられたストリームにアクセスできません。」(System.ObjectDisposedException) 例外メッセージ = "閉じたストリームにアクセスできません。"、例外の種類 = "System.ObjectDisposedException"
それを修正するために私は試しました:
ms.Flush();
私たちの目標は、byte[] をデータベースに保存することです。これも試しました:
var parameter = new SqlParameter("@Value", SqlDbType.Image)
{
Value = Image
};
cmd.Parameters.Add(parameter);
Bitmap to Byte[] が失敗したと表示されます。挿入コマンド全体は次のとおりです。
private void CreateEntry()
{
var conn = new SqlConnection(ConfigurationManager.ConnectionStrings[Connectionstring].ConnectionString);
var cmd = new SqlCommand("INSERT INTO _FH_Picture ID, Value, BindItem, Owner, McItemRelated, UploadTime VALUES @ID, @Value, @BindItem, @Owner, @McItemRelated, @UploadTime", conn) { CommandType = CommandType.Text };
cmd.Parameters.AddWithValue("@ID", ID.ToString());
cmd.Parameters.AddWithValue("@Value", imageToByteArray(value));
cmd.Parameters.AddWithValue("@Owner", _owner);
cmd.Parameters.AddWithValue("@BindItem", _bindtitem);
cmd.Parameters.AddWithValue("@McItemRelated", _mcitemrelated);
cmd.Parameters.AddWithValue("@UploadTime", _uploadtime);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}