zoukankan      html  css  js  c++  java
  • C#生成缩略图 (通用模式)

    用数据库保存图片的路径和文件名称,把文件保存在文件夹中.

     

      

    //保存在数据库中的文件路径
    ArrayList arrFilePath=new ArrayList();
    arrFilePath=myCommonMethod.UploadPic(Files,"/UpLoads/UpPicture/");
    //获取文件名称
    string fileName=arrFilePath[0].SubString(arrFilePath[0].LastIndexOf("/")+1);
    //源图路径(物理路径)
    originalImagePath=Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+fileName;
    //缩略图路径(物理路径)
    thumbnailPath     =Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+"thumb_"+fileName;
    //调用生成缩略图方法
    this.MakeThumbnail(originalImagePath,thumbnailPath,120,150, strMode out outthumbnailPath);



    #region  生成缩略图 
      ///<summary> 
      /// 生成缩略图 
      /// </summary> 
      /// <param name="originalImagePath">源图路径(物理路径)</param> 
      /// <param name="thumbnailPath">缩略图路径(物理路径)</param> 
      /// <param name="width">缩略图宽度</param> 
      /// <param name="height">缩略图高度</param> 
      /// <param name="mode">生成缩略图的方式</param>     
      public  void MakeThumbnail(string originalImagePath,  string thumbnailPath, int width, int height, string mode out string outthumbnailPath) 
      { 
       System.Drawing.Image originalImage =System.Drawing.Image.FromFile(originalImagePath); 
                
       int towidth = width; 
       int toheight = height; 
            
       int x = 0; 
       int y = 0; 
       int ow = originalImage.Width; 
       int oh = originalImage.Height;        
    
       switch (mode) 
       {         
        case "HW"://指定高宽缩放(可能变形)                 
         break; 
        case "W"://指定宽,高按比例                     
         toheight = originalImage.Height * width/originalImage.Width; 
         break; 
        case "H"://指定高,宽按比例 
         towidth = originalImage.Width * height/originalImage.Height;                     
         break;         
        case "Cut"://指定高宽裁减(不变形)                 
         if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight) 
         { 
          oh = originalImage.Height; 
          ow = originalImage.Height*towidth/toheight; 
          y = 0; 
          x = (originalImage.Width - ow)/2; 
         } 
         else 
         { 
          ow = originalImage.Width; 
          oh = originalImage.Width*height/towidth; 
          x = 0; 
          y = (originalImage.Height - oh)/2; 
         } 
         break;                     
        default : 
         break; 
       }     
                
       //新建一个bmp图片 
       System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
    
       //新建一个画板 
       Graphics g = System.Drawing.Graphics.FromImage(bitmap);
    
       //设置高质量插值法 
       g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    
       //设置高质量,低速度呈现平滑程度 
       g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    
       //清空画布并以透明背景色填充 
       g.Clear(Color.Transparent);        
    
       //在指定位置并且按指定大小绘制原图片的指定部分 
       g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), 
        new Rectangle(x, y, ow,oh), 
        GraphicsUnit.Pixel);
    
       try 
       {             
        //以jpg格式保存缩略图 
        bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); 
        outthumbnailPath=thumbnailPath;
       } 
       catch(System.Exception e) 
       { 
        throw e; 
       } 
       finally 
       { 
        originalImage.Dispose(); 
        bitmap.Dispose();                         
        g.Dispose(); 
       } 
      }
  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/ahxujian/p/9108616.html
Copyright © 2011-2022 走看看