• 按比例生成缩略图


     1 public static void saveTwoImages(string imgName,string simgName,string strPath,System.Web.UI.HtmlControls.HtmlInputFile imageUp)
     2   {
     3    //生成原图
     4    Byte[] oFileByte = new byte[imageUp.PostedFile.ContentLength];
     5    System.IO.Stream oStream = imageUp.PostedFile.InputStream;
     6    System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);
     7    int oWidth = oImage.Width; //原图宽度
     8    int oHeight = oImage.Height; //原图高度
     9    int tWidth = 100; //设置缩略图初始宽度
    10    int tHeight = 100; //设置缩略图初始高度
    11    string imgExt = getFileExtName(imageUp);
    12    //按比例计算出缩略图的宽度和高度
    13    if(oWidth >= oHeight)
    14    {
    15     tHeight = (int)Math.Floor(Convert.ToDouble(oHeight) * (Convert.ToDouble(tWidth) / Convert.ToDouble(oWidth)));
    16    }
    17    else
    18    {
    19     tWidth = (int)Math.Floor(Convert.ToDouble(oWidth) * (Convert.ToDouble(tHeight) / Convert.ToDouble(oHeight)));
    20    }
    21    //生成缩略原图
    22    Bitmap tImage = new Bitmap(tWidth,tHeight);
    23    Graphics g = Graphics.FromImage(tImage);
    24    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量插值法
    25    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//设置高质量,低速度呈现平滑程度
    26    g.Clear(Color.Transparent); //清空画布并以透明背景色填充
    27    g.DrawImage(oImage,new Rectangle(0,0,tWidth,tHeight),new Rectangle(0,0,oWidth,oHeight),GraphicsUnit.Pixel);
    28    string oFullName = strPath + imgName; //保存原图的物理路径
    29    string tFullName = strPath + simgName; //保存缩略图的物理路径
    30    try
    31    {
    32     //以JPG格式保存图片
    33     switch(imgExt.ToLower())
    34     {
    35      case "jpg":
    36       oImage.Save(oFullName,System.Drawing.Imaging.ImageFormat.Jpeg);
    37       tImage.Save(tFullName,System.Drawing.Imaging.ImageFormat.Jpeg);//
    38       break;
    39      case "gif":
    40       oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Gif);
    41       tImage.Save(tFullName,System.Drawing.Imaging.ImageFormat.Gif);
    42       break;
    43      case "png":
    44       oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Bmp);
    45       tImage.Save(tFullName,System.Drawing.Imaging.ImageFormat.Bmp);
    46       break;
    47     }
    48    }
    49    catch(Exception ex)
    50    {
    51     throw ex;
    52    }
    53    finally
    54    {
    55     //释放资源
    56     oImage.Dispose();
    57     g.Dispose();
    58     tImage.Dispose();
    59    }
    60   }

    使用方法:

    string strTime=General.getDateTime();
         string strExt=General.getFileExtName(File1);
         strPicture=strUserId+"ShopZ"+strTime+"."+strExt;
         strSPicture=strUserId+"ShopS"+strTime+"."+strExt;
         string strFilePath=Server.MapPath("Images/");
         try
         {
          saveTwoImages(strPicture,strSPicture,strFilePath,File1);
         }
  • 相关阅读:
    UI: Form editor && use CRectTracker to allow user drag/move/resize graphics
    如何设置共享文件夹
    log4net每天生成一个log文件
    自动属性/匿名方法/Lamda表达式
    ASPOSE.CELL
    转载:动态调用WebService(C#)
    按钮Button动态事件的名称
    ASPOE.WORD
    操作MSSQL服务还有测试是否连接
    操作MSSQL服务还有测试是否连接1
  • 原文地址:https://www.cnblogs.com/Chaser-Eagle/p/3684942.html
Copyright © 2020-2023  润新知