本執行個體主要介紹如何將圖片存入資料庫。將圖片存入資料庫,首先要在資料庫中建立一張表,將儲存圖片的欄位類型設為Image類型,用FileStream類、BinaryReader把圖片讀成位元組的形式,賦給一個位元組數組,然後用ADO.SqlCommand對象的ExecuteNonQuery()方法來把資料儲存到資料庫中。主要代碼如下:
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
string fullpath =openFileDialog1.FileName;//檔案路徑
FileStream fs = new FileStream(fullpath, FileMode.Open);
byte[] imagebytes =new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
//開啟資料庫
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
con.Open();
SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);
com.Parameters.Add("ImageList", SqlDbType.Image);
com.Parameters["ImageList"].Value = imagebytes;
com.ExecuteNonQuery();
con.Close();
}
}
本執行個體主要介紹如何從資料庫中把圖片讀出來。實現本執行個體主要是利用SqlDataReader從資料庫中把Image欄位值讀出來,賦給一個byte[]位元組數組,然後使用MemoryStream類與Bitmap把圖片讀取出來。主要代碼如下:
private void button1_Click(object sender, EventArgs e)
{
byte[] imagebytes = null;
//開啟資料庫
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
con.Open();
SqlCommand com = new SqlCommand("select top 1* from tb_09", con);
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
imagebytes = (byte[])dr.GetValue(1);
}
dr.Close();
com.Clone();
con.Close();
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
pictureBox1.Image = bmpt;
}
本執行個體主要介紹如何只允許輸入指定圖片格式。用OpenFileDialog控制項開啟圖片檔案,只要將OpenFileDialog控制項的Filter屬性指定為特定的圖片格式即可。例如,開啟.bmp檔案的圖片,主要代碼如下:
this.openFileDialog1.Filter = "bmp檔案(*.bmp)|*.bmp";
在用pictureBox控制項輸入圖片時,要想統一圖片大小,只需把控制項的SizeMode屬性值設為StretchImage即可,StretchImage值表示映像的大小將調整為控制項的大小。這樣,圖片的大小就統一了。