C# 图片
class PublicMethod { /// <summary> /// 读取图片到byte[] /// </summary> /// <param name="pb"></param> /// <returns></returns> public byte[] readImagetoByte(PictureBox pb) { byte[] photoByte = null; if (pb.Image != null) { using (MemoryStream ms = new MemoryStream()) { Bitmap bmp = new Bitmap(pb.Image); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); photoByte = new byte[ms.Length]; ms.Position = 0; ms.Read(photoByte, 0, Convert.ToInt32(ms.Length)); bmp.Dispose(); } } return photoByte; } /// <summary> /// 读取指定目录下的图片到byte[] /// </summary> /// <param name="strFile"></param> /// <returns></returns> public byte[] getBytesByImagePath(string strFile) { byte[] photo_byte = null; using (FileStream fs = new FileStream(strFile, FileMode.Open, FileAccess.Read)) { using (BinaryReader br = new BinaryReader(fs)) { photo_byte = br.ReadBytes((int)fs.Length); } } return photo_byte; } /// <summary> /// 从byte[]读取图片 /// </summary> /// <param name="bytes"></param> /// <returns></returns> public Image getImageByBytes(byte[] bytes) { Image photo = null; using (MemoryStream ms = new MemoryStream(bytes)) { ms.Write(bytes, 0, bytes.Length); photo = Image.FromStream(ms, true); } return photo; } }
#region 将图片转换成字节数组 /// <summary> /// 将图片转换成字节数组 /// </summary> /// <param name="OpenF"></param> /// <param name="pb"></param> public void Read_ImageToByte(OpenFileDialog OpenF, PictureBox pb) { OpenF.Filter = "*.jpg|*.jpg|*.bmp|*.bmp";//指定OpenFileDialog控件打开的文件格式 if (OpenF.ShowDialog(this) == DialogResult.OK)//如果打开了图片文件 { try { pb.Image = System.Drawing.Image.FromFile(OpenF.FileName);//将图片文件存入到PictureBox控件中 string Picpath = OpenF.FileName.ToString(); FileStream fs = new FileStream(Picpath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); imgBytesIn = br.ReadBytes((int)fs.Length); } catch { MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning); pb.Image = null; } } } #endregion
#region 将图片存储到数据库中 /// <summary> /// 以二进制的形式将图片存储到数据库中. /// </summary> /// <param name="MID">职工编号</param> /// <param name="p">图片的二进制形式</param> public void SaveImage(string MID, byte[] p) { MyDataClass.Con_Open(); StringBuilder SqlStr = new StringBuilder(); SqlStr.Append("update tb_Staffbasic Set Photo=@Photo where ID=" + MID); SqlCommand cmd = new SqlCommand(SqlStr.ToString(), DataClass.MyMeans.My_con); cmd.Parameters.Add("@Photo", SqlDbType.Binary).Value = p; cmd.ExecuteNonQuery(); MyDataClass.Con_Close(); } #endregion