У меня есть этот код ниже, который отлично работает. Я пытаюсь загрузить и извлечь изображение из моей базы данных из учебника, но когда я изменяю его данными из своей базы данных, он продолжает показывать исключение аргумента для этой части
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
с ошибкой для system.drawing dll
Может загружать, но не может показать загруженное изображение
DataSet ds;
string strName, imageName;
string constr = "Data Source=192.168.0.102;Initial Catalog=db_RVManzan;User ID=RVMserver;Password=rvmadmin";
public sample()
{
InitializeComponent();
BindImageList();
}
private void btnBrowse_Click(object sender, RoutedEventArgs e)
{
try
{
FileDialog fldlg = new OpenFileDialog();
fldlg.InitialDirectory = Environment.SpecialFolder.MyPictures.ToString();
fldlg.Filter = "Image File (*.jpg;*.bmp;*.gif)|*.jpg;*.bmp;*.gif";
fldlg.ShowDialog();
{
strName = fldlg.SafeFileName;
imageName = fldlg.FileName;
ImageSourceConverter isc = new ImageSourceConverter();
image1.SetValue(Image.SourceProperty, isc.ConvertFromString(imageName));
}
fldlg = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
insertImageData();
}
private void btnShow_Click(object sender, RoutedEventArgs e)
{
DataTable dataTable = ds.Tables[0];
foreach (DataRow row in dataTable.Rows)
{
if (row[1].ToString() == cbImages.SelectedItem.ToString())
{
//Store binary data read from the database in a byte array
byte[] blob = (byte[])row[43];
MemoryStream stream = new MemoryStream();
stream.Write(blob, 0, blob.Length);
stream.Position = 0;
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
ms.Seek(0, SeekOrigin.Begin);
bi.StreamSource = ms;
bi.EndInit();
image2.Source = bi;
}
}
}
private void insertImageData()
{
try
{
if (imageName != "")
{
//Initialize a file stream to read the image file
FileStream fs = new FileStream(imageName, FileMode.Open, FileAccess.Read);
//Initialize a byte array with size of stream
byte[] imgByteArr = new byte[fs.Length];
//Read data from the file stream and put into the byte array
fs.Read(imgByteArr, 0, Convert.ToInt32(fs.Length));
//Close a file stream
fs.Close();
string sql = "update Employees set Emppic ='" + imgByteArr + "'";
SqlConnection conn = new SqlConnection(constr);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show("Image added successfully.");
BindImageList();
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void BindImageList()
{
try
{
using (SqlConnection conn = new SqlConnection(constr))
{
conn.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Employees", conn))
{
ds = new DataSet("myDataSet");
adapter.Fill(ds);
DataTable dt = ds.Tables[0];
cbImages.Items.Clear();
foreach (DataRow dr in dt.Rows)
cbImages.Items.Add(dr["Empid"].ToString());
cbImages.SelectedIndex = 0;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Пожалуйста, дайте мне знать, если я не смогу объяснить вопросы. Спасибо