I would like to insert image to my database. After clicking button the image should be retrieved from database and showed. How to do it?
Thats what I am sending to database:
//Send my img
private void SendImageMessageClicked(object sender, MouseButtonEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Images PNG (.png)|*.png";
if (openFileDialog.ShowDialog() == true)
{
string message = imageToByteArray(System.Drawing.Image.FromFile(openFileDialog.FileName)).ToString();
if (con.State == System.Data.ConnectionState.Open)
con.Close();
con.Open();
cmd.CommandText = "INSERT INTO messages VALUES(null, " + userId + ", " + secondUserId + ", '" + message + "', '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')";
cmd.Connection = con;
cmd.ExecuteNonQuery();
writeMessage.Text = "";
con.Close();
}
}
// convert image to byte array
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms.ToArray();
}
That is how I am trying to get it back:
while (dr.Read())
{
BitmapImage image = new BitmapImage();
MemoryStream stream;
stream = new MemoryStream(Encoding.ASCII.GetBytes((string)dr[3]));
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
imgMsg.Source = image;
}