在网站建设中,关于图片是必不可少的,后台管理中往往需要上传图片,大的图片在网络中传输速率很慢,很不理想,因此解决办法是,用户上传图片时候,保存一个图片的缩略图,在网页显示用缩略图,用户下载,使用原图,下面是通过搜索资料,整理的c#关于保存图片缩略图的方法,用户只需要传入适当参数,调用此方法就可以生成缩略图。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
public partial class upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
/// <summary>
/// 图片等比缩放
/// </summary>
/// <param name="postedfile">原图地址加名称</param>
/// <param name="savepath">缩略图存放地址</param>
/// <param name="smallname">缩略图名称</param>
/// <param name="targetwidth">指定的最大宽度</param>
/// <param name="targetheight">指定的最大高度</param>
public static void zoomauto(string initpath, string savepath,string smallname, double targetwidth, double targetheight)
{
//虚拟路径转绝对路径
initpath = System.Web.HttpContext.Current.Server.MapPath(initpath);
savepath = System.Web.HttpContext.Current.Server.MapPath(savepath);
//创建目录
string dir = Path.GetDirectoryName(savepath);
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
//原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
System.Drawing.Image initp_w_picpath = System.Drawing.Image.FromFile(initpath);
//原图宽高均小于模版,不作处理,直接保存
if (initp_w_picpath.Width <= targetwidth && initp_w_picpath.Height <= targetheight)
{
//保存
initp_w_picpath.Save(savepath + smallname, System.Drawing.Imaging.ImageFormat.Jpeg);
}
else
{
//缩略图宽、高计算
double newwidth = initp_w_picpath.Width;
double newheight = initp_w_picpath.Height;
//宽大于高或宽等于高(横图或正方)
if (initp_w_picpath.Width > initp_w_picpath.Height || initp_w_picpath.Width == initp_w_picpath.Height)
{
//如果宽大于模版
if (initp_w_picpath.Width > targetwidth)
{
//宽按模版,高按比例缩放
newwidth = targetwidth;
newheight = initp_w_picpath.Height * (targetwidth / initp_w_picpath.Width);
}
}
//高大于宽(竖图)
else
{
//如果高大于模版
if (initp_w_picpath.Height > targetheight)
{
//高按模版,宽按比例缩放
newheight = targetheight;
newwidth = initp_w_picpath.Width * (targetheight / initp_w_picpath.Height);
}
}
//生成新图
//新建一个bmp图片
System.Drawing.Image newp_w_picpath = new System.Drawing.Bitmap((int)newwidth, (int)newheight);
//新建一个画板
System.Drawing.Graphics newg = System.Drawing.Graphics.FromImage(newp_w_picpath);
//设置质量
newg.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
newg.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//置背景色
newg.Clear(System.Drawing.Color.White);
//画图
newg.DrawImage(initp_w_picpath, new System.Drawing.Rectangle(0, 0, newp_w_picpath.Width, newp_w_picpath.Height), new System.Drawing.Rectangle(0, 0, initp_w_picpath.Width, initp_w_picpath.Height), System.Drawing.GraphicsUnit.Pixel);
//保存缩略图
newp_w_picpath.Save(savepath + smallname, System.Drawing.Imaging.ImageFormat.Jpeg);
//释放资源
newg.Dispose();
newp_w_picpath.Dispose();
initp_w_picpath.Dispose();
}
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。