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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM