像发布产品,添加新闻等模块实现图片上传的功能是非常普遍的,但是往往会涉及到缩略图和实际图片两种,如果在上传图片的时候就生成缩略图就会产生上传一张图片出现缩略图和实际尺寸图两张图片的情况,占用空间不说,还是比较费事的。济南网站建设
刚刚在同事那里取得一个比较好的解决方案,就是在图片上传的时候只保存一张实际尺寸的图,在前台页面取的时候,如果需要实现缩略图,就把上传的实际尺寸图片等比例缩放一下,就可以轻松的搞定,下面附上等比例缩放的代码。
public string getpic(string url, int w, int h) { if (url == "") { return "无图片"; } else { try { System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(url)); int width = image.Width; int height = image.Height; if (width > w || height > h) { if ((double)width / (double)w > (double)height / (double)h) { height = Convert.ToInt32(height * ((double)w / (double)width)); width = w; } else { width = Convert.ToInt32(width * ((double)h / (double)height)); height = h; } } return "<img src=\"" + url + "\" border=0 width=\"" + w + "\" height=\"" + h + "\" />"; } catch { return "无图片"; } }
OK,有了上面这个等比例缩放的方法,就可以把从数据库里取出的图片路径以及要缩放到的宽和高传进去就完事了。
注:此方法会出现另外一种不理想的状况,如果我们上传两张图片,一张尺寸为:120*80,一张尺寸为60*120,那么通过等比例缩放出来的图片会出现高或者宽压缩的情况。所以在上传的时候,尽量提示上传者上传标准尺寸的图片,比如 150*150。