按比例生成缩略图

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

     }

 

你可能感兴趣的:(缩略图)