zoukankan      html  css  js  c++  java
  • 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();
      }



  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/chaodongwang/p/888881.html
Copyright © 2011-2022 走看看