SQL Server 2008 データベースからイメージを読み取って Windows フォームにロードするのに問題がありますPictureBox
。これは、DB から画像を取得するコードです。
//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
これは、画像を DB に保存する方法です:
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);
}
私を助けてください!