asp.net中上传图片文件实现防伪图片水印并写入数据库

复制代码 代码如下:

  // 涉及命名空间

  using System;

  using System.Collections;

  using System.ComponentModel;

  using System.Data;

  using System.Data.SqlClient;

  using System.Drawing;

  using System.Drawing.Drawing2D;

  using System.Drawing.Imaging;

  using System.Web;

  using System.Configuration;

  // 方法

  public void AddUser(string PersonName, string PersonEmail, string PersonSex, string PersonDOB, string PersonImage, string PersonImageType)

  {

  string strImageType = userImage.PostedFile.ContentType;

  Stream ImageStream = userImage.PostedFile.InputStream;

  // 加水印----------------->

  string wImageFile = Server.MapPath("/bkwww/image/HomeSign.gif"); // 要加的水印图

  Image sImage = Image.FromStream(ImageStream); // 从 Http 输入流创建 image

  Image wImage = Image.FromFile(wImageFile);

  // 绘图

  Graphics g = Graphics.FromImage(sImage);

  g.DrawImage(wImage, new Rectangle(0, 0, wImage.Width, wImage.Height), 0, 0, wImage.Width, wImage.Height, GraphicsUnit.Pixel);

  // 保存,并将 image 转化为 byte[]

  MemoryStream ms=new MemoryStream();

  byte[] myImage=null;

  sImage.Save(ms, ImageFormat.Gif);

  myImage = ms.GetBuffer();

  //------------------------>

  // 写入数据库

  string strConn = ConfigurationSettings.AppSettings["ConnectionString"];

  SqlConnection myConnection = new SqlConnection(strConn);

  SqlCommand myCommand = new SqlCommand("sp_person_isp", myConnection);

  myCommand.CommandType = CommandType.StoredProcedure;

  myCommand.Parameters.Add("@PersonEmail", SqlDbType.VarChar, 255).Value = PersonEmail;

  myCommand.Parameters.Add("@PersonName", SqlDbType.VarChar, 255).Value = PersonName;

  myCommand.Parameters.Add("@PersonSex", SqlDbType.Char, 1);

  if(sexMale.Checked)

  myCommand.Parameters["@PersonSex"].Value = "M";

  else

  myCommand.Parameters["@PersonSex"].Value = "F";

  myCommand.Parameters.Add("@PersonDOB", SqlDbType.DateTime).Value = PersonDOB;

  myCommand.Parameters.Add("@PersonImage", SqlDbType.Image).Value = myImage;

  myCommand.Parameters.Add("@PersonImageType", SqlDbType.VarChar, 255).Value = ImageType;

  try

  {

  myConnection.Open();

  myCommand.ExecuteNonQuery();

  myConnection.Close();

  Response.Write("添加成功!");

  }

  catch(System.Exception SqlEx)

  {

  Response.Write("添加失败!"+SqlEx.ToString());

  }

  }