温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

关于图片缩放的c#方法

发布时间:2020-07-10 20:33:47 来源:网络 阅读:1642 作者:逆光翱翔 栏目:编程语言

  在网站建设中,关于图片是必不可少的,后台管理中往往需要上传图片,大的图片在网络中传输速率很慢,很不理想,因此解决办法是,用户上传图片时候,保存一个图片的缩略图,在网页显示用缩略图,用户下载,使用原图,下面是通过搜索资料,整理的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(); 
        
        }     
    }  
}


向AI问一下细节
推荐阅读:
  1. PHP图片缩放
  2. 图片缩放

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI