转自csdn论坛,正确已经测试,非常好用。只不过引用的时候有点问题,图片没有释放,见下面红字部分。
我抄一份代码给你,清清月儿的.
using System; using System.IO; using System.Drawing; using System.Drawing.Imaging; public class ImageThumbnail{ public Image ResourceImage; private int ImageWidth; private int ImageHeight; public string ErrorMessage; public ImageThumbnail( string ImageFileName) { ResourceImage = Image.FromFile(ImageFileName); ErrorMessage = "" ; } public bool ThumbnailCallback() { return false ; } // 方法1,按大小 public bool ReducedImage( int Width, int Height, string targetFilePath) { try { Image ReducedImage; Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback); ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero); ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg); ReducedImage.Dispose(); return true ; } catch (Exception e) { ErrorMessage = e.Message; return false ; } } // 方法2,按百分比 缩小60% Percent为0.6 targetFilePath为目标路径 public bool ReducedImage( double Percent, string targetFilePath) { try { Image ReducedImage; Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback); ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent); ImageHeight = (ResourceImage.Height) * ImageWidth / ResourceImage.Width; // 等比例缩放 ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero); ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg); ReducedImage.Dispose(); return true ; } catch (Exception e) { ErrorMessage = e.Message; return false ; } }}后台代码: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page{ protected void Page_Load( object sender, EventArgs e) { } protected void bt_upload_Click( object sender, EventArgs e) { try { if (FileUpload1.PostedFile.FileName == "" ) { this .lb_info.Text = " 请选择文件! " ; } else { string filepath = FileUpload1.PostedFile.FileName; string filename = filepath.Substring(filepath.LastIndexOf( " \\ " ) + 1 ); string serverpath1 = Server.MapPath( " images/ " ) + filename; string serverpath2 = Server.MapPath( " images/ " ) + System.DateTime.Now.ToString( " yyy-MM-dd-hh-mm-ss " ) + Session.SessionID + filename; FileUpload1.PostedFile.SaveAs(serverpath1); ImageThumbnail img = new ImageThumbnail(filepath); img.ReducedImage( 0.4 , serverpath2); // 0.4表示缩小40%
img.ResourceImage.Dispose(); //这里要释放一下 this .lb_info.Text = " 上传成功! " ; } } catch (Exception error) { this .lb_info.Text = " 上传发生错误!原因: " + error.ToString(); } }}