日期:2014-05-18 浏览次数:20681 次
using System.Drawing.Imaging; using System.Drawing; public partial class A_T_userpicture : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string fileName = ""; string filePath = ""; //清除输出 Response.Clear(); System.Drawing.Image img = null; if (Request.QueryString["fsrc"] != null) { fileName = Request.QueryString["fsrc"].ToString(); if (fileName.StartsWith("http://")) { filePath =fileName; //获取URL流 System.Net.WebClient client = new System.Net.WebClient(); System.IO.Stream stream = new System.IO.MemoryStream(); stream = client.OpenRead(filePath); //从流中得到img对象 img = System.Drawing.Image.FromStream(stream, true); } else { filePath = Server.MapPath(fileName); img = System.Drawing.Image.FromFile(filePath); } } else { try { filePath = Server.MapPath("mumu.JPG"); img = System.Drawing.Image.FromFile(filePath); } catch(Exception se) { throw se; //return; } } //初始化图片的宽和高 int fw =120; int fh =120; if (Request.QueryString["fw"] != null && Request.QueryString["fh"]!=null) { fw = int.Parse(Request.QueryString["fw"].ToString()); fh = int.Parse(Request.QueryString["fh"].ToString()); } System.Drawing.Bitmap outBmp = new System.Drawing.Bitmap(fw,fh); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(outBmp); try { ImageFormat thisformat = img.RawFormat; System.Drawing.Size newSize = this.getNewSize(fw, fh, img.Width, img.Height); //设置画布质量 //线性质量设置 ( AssumeLinear ) 高速度呈现。 g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; //指定高速度呈现 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; //指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; //清除绘图并指定背景色 g.Clear(System.Drawing.Color.Transparent); //在指定位置并且按指定大小绘制指定的 Image 的指定部分。 g.DrawImage(img,new System.Drawing.Rectangle((fw-newSize.Width)/2,(fh-newSize.Height)/2,newSize.Width,newSize.Height),0,0,img.Width, img.Height, System.Drawing.GraphicsUnit.Pixel); System.IO.MemoryStream ms = new System.IO.MemoryStream(); //特定图像编码器,编码方式 EncoderParameters parameters = new EncoderParameters(2); parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)90)); parameters.Param[1] = new EncoderParameter(Encoder.Compression, ((long)1024)); System.Drawing.Imaging.ImageCodecInfo jpegICI = null; //检索有关已安装的图像编码解码器的所有相关信息 System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.Im