我无法从 SQL Server 2008 数据库中读取图像并将其加载到 Windows FormsPictureBox
中。这是从数据库中检索图像的代码:
//UI Button Binded Code
private void LoadImage_Click(object sender, RoutedEventArgs e)
{
DataSet data = DBClient.GetEmployee(_EID[0]);
//...
//...
byte[] pic = (byte[])data.Tables[0].Rows[0]["Picture"];
EmployeeCardForm ef = new EmployeeCardForm(name, fname, nic, deptt, desig, doj, address, ecode, pic);
ef.Show();
}
//EmployeeCardForm Constructor File Code
public EmployeeCardForm(String name, String fname, String nic, String deptt, String desig, String doj, String address, String ecode, byte[] pic)
{
InitializeComponent();
this.MaximizeBox = false;
label18.Text = "Record has been successfully Saved. Please take Print out by pressing Print Button below!";
try
{
pictureBox1.Image = Image.FromStream(new MemoryStream(pic));
//Some code here
}
catch (IOException e)
{
MessageBox.Show("Some Error occurred!");
}
//declare event handler for printing in constructor
printdoc1.PrintPage += new PrintPageEventHandler(printdoc1_PrintPage);
}
当我运行该程序并单击按钮以加载图像时,应用程序变得无响应。调试后才知道下面这行代码有问题:
pictureBox1.Image = Image.FromStream(new MemoryStream(pic));
当我使用 try/catch 块时,它向我显示了以下异常:
System.ArgumentException: Parameter is not valid. at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) at System.Drawing.Image.FromStream(Stream stream) at SimpleReport.EmployeeCardForm..ctor(String name, String fname, String nic, String deptt, String desig, String doj, String address, String ecode, Byte[] pic) in D:\O Projects\EM\SimpleReport\EmployeeCardForm.cs:line 60
这就是我将图像保存到数据库中的方式:
private void SaveImage_Click(object sender, RoutedEventArgs e)
{
Picture_Path= filename;
FileStream fs;
fs = new FileStream(@Picture_Path, FileMode.Open, FileAccess.Read);
//a byte array to read the image
byte[] picbyte = new byte[fs.Length];
fs.Read(picbyte, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
DBClient.AddEmployee(ecode, emp_name.Text, fname, nic, deptt, desig, doj, address, picbyte);
}
请帮帮我!