日期:2014-05-18 浏览次数:20791 次
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