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();
      }



  • 相关阅读:
    PHP Fatal error: Uncaught Error: Call to undefined function pcntl_fork().. 开启php pcntl扩展实现多进程
    php实现共享内存进程通信函数之_shm
    Centos下10000次循环测试php对Redis和共享内存(shm)读写效率
    php操作共享内存shmop类及简单使用测试(代码)
    作为phper既然了解共享内存函数shmop的使用方法,那么就必须要了解一下信号量是什么,以及信号量使用的代码案例
    php简单使用shmop函数创建共享内存减少服务器负载
    作为php了解一下共享内存的概念及优缺点
    给PHP开启shmop扩展实现共享内存
    Centos环境自写脚本查看使用php或nginx占用内存
    linux下查看和添加path环境变量
  • 原文地址:https://www.cnblogs.com/chaodongwang/p/888881.html
Copyright © 2011-2022 走看看