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

      1 用数据库保存图片的路径和文件名称,把文件保存在文件夹中.
      2 //保存在数据库中的文件路径
      3 ArrayList arrFilePath=new ArrayList();
      4 arrFilePath=myCommonMethod.UploadPic(Files,"/UpLoads/UpPicture/");
      5 //获取文件名称
      6 string fileName=arrFilePath[0].SubString(arrFilePath[0].LastIndexOf("/")+1);
      7 //源图路径(物理路径)
      8 originalImagePath=Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+fileName;
      9 //缩略图路径(物理路径)
     10 thumbnailPath     =Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+"thumb_"+fileName;
     11 //调用生成缩略图方法
     12 this.MakeThumbnail(originalImagePath,thumbnailPath,120,150, strMode out outthumbnailPath);
     13 
     14 #region  生成缩略图 
     15   ///<summary> 
     16   /// 生成缩略图 
     17   /// </summary> 
     18   /// <param name="originalImagePath">源图路径(物理路径)</param> 
     19   /// <param name="thumbnailPath">缩略图路径(物理路径)</param> 
     20   /// <param name="width">缩略图宽度</param> 
     21   /// <param name="height">缩略图高度</param> 
     22   /// <param name="mode">生成缩略图的方式</param>     
     23   public  void MakeThumbnail(string originalImagePath,  string thumbnailPath, int width, int height, string mode out string outthumbnailPath) 
     24   { 
     25    System.Drawing.Image originalImage =System.Drawing.Image.FromFile(originalImagePath); 
     26             
     27    int towidth = width; 
     28    int toheight = height; 
     29         
     30    int x = 0; 
     31    int y = 0; 
     32    int ow = originalImage.Width; 
     33    int oh = originalImage.Height;        
     34 
     35    switch (mode) 
     36    {         
     37     case "HW"://指定高宽缩放(可能变形)                 
     38      break; 
     39     case "W"://指定宽,高按比例                     
     40      toheight = originalImage.Height * width/originalImage.Width; 
     41      break; 
     42     case "H"://指定高,宽按比例 
     43      towidth = originalImage.Width * height/originalImage.Height;                     
     44      break;         
     45     case "Cut"://指定高宽裁减(不变形)                 
     46      if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight) 
     47      { 
     48       oh = originalImage.Height; 
     49       ow = originalImage.Height*towidth/toheight; 
     50       y = 0; 
     51       x = (originalImage.Width - ow)/2; 
     52      } 
     53      else 
     54      { 
     55       ow = originalImage.Width; 
     56       oh = originalImage.Width*height/towidth; 
     57       x = 0; 
     58       y = (originalImage.Height - oh)/2; 
     59      } 
     60      break;                     
     61     default : 
     62      break; 
     63    }     
     64             
     65    //新建一个bmp图片 
     66    System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
     67 
     68    //新建一个画板 
     69    Graphics g = System.Drawing.Graphics.FromImage(bitmap);
     70 
     71    //设置高质量插值法 
     72    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
     73 
     74    //设置高质量,低速度呈现平滑程度 
     75    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
     76 
     77    //清空画布并以透明背景色填充 
     78    g.Clear(Color.Transparent);        
     79 
     80    //在指定位置并且按指定大小绘制原图片的指定部分 
     81    g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), 
     82     new Rectangle(x, y, ow,oh), 
     83     GraphicsUnit.Pixel);
     84 
     85    try 
     86    {             
     87     //以jpg格式保存缩略图 
     88     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); 
     89     outthumbnailPath=thumbnailPath;
     90    } 
     91    catch(System.Exception e) 
     92    { 
     93     throw e; 
     94    } 
     95    finally 
     96    { 
     97     originalImage.Dispose(); 
     98     bitmap.Dispose();                         
     99     g.Dispose(); 
    100    } 
    101   }
  • 相关阅读:
    Solr6 Suggest(智能提示)
    Oracle12c:安装后新建用户及其默认表空间,并创建表测试
    Django:使用PyCharm创建django项目并发布到apache2.4
    后台收集
    Hadoop+Spark:集群环境搭建
    Hadoop:搭建hadoop集群
    Linux:SSH错误"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! "
    Linux:Ubuntu14.04离线安装scala(在线安装)
    Linux:Ubuntu 14.04 Server 离线安装Jjava8(及在线安装)
    Linux:实现Hadoop集群Master无密码登录(SSH)各个子节点
  • 原文地址:https://www.cnblogs.com/allenzhang/p/6733612.html
Copyright © 2011-2022 走看看