asp.net中生成缩略图并添加版权实例代码

  

复制代码 代码如下:

  //定义image类的对象

  Drawing.Image image,newimage;

  //图片路径

  protected string imagePath;

  //图片类型

  protected string imageType;

  //图片名称

  protected string imageName;

  //提供一个回调方法,用于确定Image对象在执行生成缩略图操作时何时提前取消执行

  //如果此方法确定 GetThumbnailImage 方法应提前停止执行,则返回 true;否则返回 false

  System.Drawing.Image.GetThumbnailImageAbort callb = null;

  private void sm_Click(object sender, System.EventArgs e)

  {

  string mPath;

  if("" != File1.PostedFile.FileName) //File1为上传文件控件

  {

  imagePath = File1.PostedFile.FileName;

  //取得图片类型

  imageType= imagePath.Substring(imagePath.LastIndexOf(".")+1);

  //取得图片名称

  imageName = imagePath.Substring(imagePath.LastIndexOf("\\")+1);

  //判断是否是JPG或者GIF图片,这里只是举个例子,并不一定必须是这两种图片

  if("jpg" != imageType && "gif" != imageType)

  {

  Response.Write("<script language='javascript'> alert('对不起!请您选择jpg或者gif格式的图片!');</script>");

  return;

  }

  else

  {

  try

  {

  //建立虚拟路径

  mPath=Server.MapPath("UploadFiles");

  //保存到虚拟路径

  File1.PostedFile.SaveAs(mPath+"\\"+imageName);

  //显示原图, imageSource为图片控件

  //imageSource.ImageUrl = "UploadFiles/"+imageName;

  //为上传的图片建立引用

  image=System.Drawing.Image.FromFile(mPath+"\\"+imageName);

  //生成缩略图

  newimage=image.GetThumbnailImage(200,200,callb,new System.IntPtr());

  //把缩略图保存到指定的虚拟路径

  newimage.Save(Server.MapPath("UploadFiles")+"\\small"+imageName);

  //释放image对象占用的资源

  image.Dispose();

  //释放newimage对象的资源

  newimage.Dispose();

  //显示缩略图

  AddTextToImg ("UploadFiles/"+"small"+imageName,"Pic Info"); // 在图片上加入信息说明

  Image1.ImageUrl = "UploadFiles/"+"small"+imageName;

  Script.Alert("上传成功!");

  }

  catch

  {

  Script.Alert("上传失败!");

  }

  } // end else

  }

  // 在图片上加入自己的信息,

  // AddTextToImg (physicPath,"Pic Info");

  private void AddTextToImg(string fileName,string text)

  {

  //string sss = MapPath(fileName);

  if ( !File.Exists ( fileName)) {

  throw new FileNotFoundException("The file don't exist!");

  }

  //还需要判断文件类型是否为图像类型,这里就不赘述了

  System.Drawing.Image image = System.Drawing.Image.FromFile(fileName);//MapPath(fileName));

  Bitmap bitmap = new Bitmap(image,image.Width,image.Height);

  Graphics g = Graphics.FromImage(bitmap);

  float fontSize = 22.0f; //字体大小

  float textWidth = text.Length*fontSize; //文本的长度

  //下面定义一个矩形区域,以后在这个矩形里画上白底黑字

  float rectX = 0;

  float rectY = 0;

  float rectWidth = text.Length*(fontSize+18);

  float rectHeight = fontSize+18;

  //声明矩形域

  RectangleF textArea = new RectangleF(rectX,rectY,rectWidth,rectHeight);

  Font font = new Font("宋体",fontSize);//定义字体

  Brush whiteBrush = new SolidBrush(Color.White);

  Brush blackBrush = new SolidBrush(Color.Black);

  g.FillRectangle(blackBrush,rectX,rectY,rectWidth,rectHeight);

  g.DrawString(text,font,whiteBrush,textArea);

  MemoryStream ms = new MemoryStream();

  //保存为Jpg类型

  bitmap.Save(ms,ImageFormat.Jpeg);

  //输出处理后的图像,这里为了演示方便,我将图片显示在页面中了

  /**//* Response.Clear();

  Response.ContentType = "image/jpeg";

  Response.BinaryWrite( ms.ToArray() );

  */

  FileStream fs=new FileStream(fileName, FileMode.OpenOrCreate);//.CreateNew);

  fs.Write(ms.ToArray(),0,ms.ToArray().Length);

  fs.Close();

  Image1.ImageUrl = fileName; // 将图片显示在Image控件中

  g.Dispose();

  bitmap.Dispose();

  image.Dispose();

  }