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