一直觉的关于图片存储读取挺有难度的,别说复杂的,就连简单的自己也很难编写出来,
今天就把简单的学了一下,其实只是稍微复杂一些而已,这也是基本功之一吧。
首先最简单的读取图片,只需筛选访问文件类型即可。
public void readImage(OpenFileDialog openF,PictureBox picBox)
{
openF.Filter = "*.jpg|*.jpg|*.bmp|*.bmp";
if (openF.ShowDialog() == DialogResult.OK)
{
try
{
picBox.Image = System.Drawing.Image.FromFile(openF.FileName);
}
catch
{
MessageBox.Show("读¨¢取¨?失º¡ì败㨹");
}
}
}
然后是存储图片
public void SaveImage(string MID, OpenFileDialog openF)
{
string P_str = openF.FileName;//得Ì?到Ì?图ª?片?的Ì?所¨´在¨²路¡¤径?
FileStream fs = new FileStream(//创ä¡ä建¡§文?件t流¢¡Â对?象¨®
P_str, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);//创ä¡ä建¡§二t进?制?读¨¢取¨?器¡Â
byte[] imgBytesIn = br.ReadBytes((int)fs.Length);//将?流¢¡Â读¨¢入¨?到Ì?字Á?节¨²数ºy组Á¨¦中D
conn.Open();//打䨰开a数ºy据Y库a连¢?接¨®
StringBuilder strSql = new StringBuilder();//创ä¡ä建¡§字Á?符¤?串ä?构1造¨¬器¡Â
strSql.Append(//附?加¨®字Á?符¤?串ä?
"update tb_employee Set employeePhoto=@Photo where employeeID=" + MID);
SqlCommand cmd = new SqlCommand(strSql.ToString(), conn);//创ä¡ä建¡§命¨¹令¢?对?象¨®
cmd.Parameters.Add("@Photo", SqlDbType.Binary).Value = imgBytesIn;//添¬¨ª加¨®参?数ºy
cmd.ExecuteNonQuery();//执¡ä行DSQL命¨¹令¢?
conn.Close();//关?闭À?数ºy据Y库a连¢?接¨®
}
最后把图片展示出来
public void Get_Image(string ygname, PictureBox pb)
{
byte[] p_w_picpathbytes = null;//声¦¨´明¡Â字Á?节¨²数ºy组Á¨¦变À?量¢?
conn.Open();//打䨰开a数ºy据Y库a连¢?接¨®
SqlCommand com = new SqlCommand(//创ä¡ä建¡§命¨¹令¢?对?象¨®
"select * from tb_employee where employeeID='" + ygname + "'", conn);
SqlDataReader dr = com.ExecuteReader();//执¡ä行DSQl命¨¹令¢?
while (dr.Read())//读¨¢取¨?数ºy据Y库a中D的Ì?数ºy据Y
{
p_w_picpathbytes = (byte[])dr.GetValue(11);//得Ì?到Ì?图ª?象¨®的Ì?字Á?节¨²数ºy据Y
}
dr.Close();//关?闭À?数ºy据Y读¨¢取¨?器¡Â
conn.Close();//关?闭À?数ºy据Y库a连¢?接¨®
MemoryStream ms = new MemoryStream(p_w_picpathbytes);//创ä¡ä建¡§内¨²存ä?流¢¡Â对?象¨®
Bitmap bmpt = new Bitmap(ms);//得Ì?到Ì?BMP对?象¨®
pb.Image = bmpt;//显?示º?图ª?像?信?息¡é
}
我想这一切主要还是靠多练习的