在做项目遇到一个问题,就是如何控制一张上传图片不变形生成缩略图的问题,写了一个小小的算法,用到了递归调用,现将代码写出来分享一下。
[C#] 纯文本查看 复制代码 protected void Button1_Click(object sender, EventArgs e)
{
int width = 300, height = 300;//生成缩略图时定义一个最大的宽和高
System.Drawing.Image img = System.Drawing.Image.FromFile("d:/test.jpg");
int swidth =img.Width;//源图片的宽
int sheight = img.Height;//源图片的高
var info = new SImg
{
width = swidth,
height = sheight
};
info.GetHW(width, height, info);
//得到缩放后的宽和高
int w = info.width;
int h = info.height;
//获取缩略图
System.Drawing.Image smallimg = img.GetThumbnailImage(w, h, new System.Drawing.Image.GetThumbnailImageAbort(() => { return false; }), IntPtr.Zero);
}
public class SImg
{
public int width { get; set; }
public int height { get; set; }
public void GetHW(int width, int height, SImg img)
{
//如果宽和高任意一个超过定义的宽和高 执行等比
if (img.width > width || img.height > height)
{
img.width = img.width / 2;
img.height = img.height / 2;
GetHW(width, height, img);
}
}
}
|