1.生成缩放图,图片有变形感觉(不完美)
context.Response.ContentType = "image/jpg";
string path = context.Server.MapPath("upload\\1.jpg");
using (Image Img = Image.FromFile(path))
{
using (Bitmap b = new Bitmap(400,400))//创建一个画板
{
using (Graphics g = Graphics.FromImage(b))//在画板上面画(指定了大小)
{
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.Clear(Color.Transparent);//透明
//将指定位置并且按指定大小绘制原图片
g.DrawImage(Img, new Rectangle(0, 0, 400, 400), new Rectangle(0, 0, Img.Width, Img.Height), GraphicsUnit.Pixel);
b.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
}
}
2.按比例生成缩放图
string path=context.Server.MapPath("upload\\1.jpg");
using (Image Img = Image.FromFile(path))
{
int W= 400;//定义缩放的宽度
int H = 400;//定义缩放的高度
int ImgWidth = Img.Width;//图片原始宽度
int ImgHeight = Img.Height;//图片原始高度
if(ImgWidth/ImgHeight>=W/H)//相对缩放的框来说 宽>高
{
if(ImgWidth>W)
{
ImgWidth=W;
ImgHeight = ImgHeight * (W / ImgWidth);
}
else
{
//否则不变
}
}
else
{
if(ImgHeight>H)
{
ImgHeight=H;
ImgWidth=ImgWidth*(H/ImgHeight);
}
else
{
}
}
//创建一个根据图片比较后的大小
using(Bitmap b=new Bitmap(ImgWidth,ImgHeight))
{
using(Graphics g=Graphics.FromImage(b))
{
g.DrawImage(Img, new Rectangle(0, 0, ImgWidth,ImgHeight), new Rectangle(0, 0, Img.Width, Img.Height), GraphicsUnit.Pixel);
b.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
}
}