在ASP.NET中上传图片并生成缩略图

1、using System.Drawing;

 2、protected void BtnLoadImage_Click(object sender, EventArgs e)
    {
        //UploadFile文件上传控件的ID.
        //检查上传文件的格式是否有效
        if(this.UploadFile.PostedFile.ContentType.ToLower().IndexOf("image") < 0)
        {
            Response.Write("上传图片格式无效!"); return;
        }
        //生成原图
        //获取上传文件的大小。
        Byte[] oFileByte = new byte[this.UploadFile.PostedFile.ContentLength];
        System.IO.Stream oStream = this.UploadFile.PostedFile.InputStream;
        System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);

        int oWidth = oImage.Width;
        //原图宽度
        int oHeight = oImage.Height;
        //原图高度
        int tWidth =200;
        //设置缩略图初始宽度
        int tHeight = 100;
        //设置缩略图初始高度
        //按比例计算出缩略图的宽度和高度
        if(oWidth >= oHeight)
        {
            //如果原图的宽度大于设置的宽度,用下列算法:原图高度*(设置的宽度/原图宽度).
            tHeight = (int)Math.Floor(Convert.ToDouble(oHeight) * (Convert.ToDouble(tWidth) / Convert.ToDouble(oWidth)));
        }
        else
        {
            //如果原图的宽度小于设置的宽度,用下列算法:原图宽度*(设置的高度/原图高度).
            tWidth = (int)Math.Floor(Convert.ToDouble(oWidth) * (Convert.ToDouble(tHeight) / Convert.ToDouble(oHeight)));
        }
        //生成缩略原图
        Bitmap tImage = new Bitmap(tWidth,tHeight);
        Graphics g = Graphics.FromImage(tImage);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
        //设置高质量插值法
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //设置高质量,低速度呈现平滑程度
        g.Clear(Color.Transparent);
        //清空画布并以透明背景色填充
        g.DrawImage(oImage,new Rectangle(0,0,tWidth,tHeight),new Rectangle(0,0,oWidth,oHeight),GraphicsUnit.Pixel);
        string oFullName = Server.MapPath(".") + "/" + "o" + DateTime.Now.ToShortDateString().Replace("-","") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg";
        //保存原图的物理路径
        string tFullName = Server.MapPath(".") + "/" + "t" + DateTime.Now.ToShortDateString().Replace("-","") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg";
        //保存缩略图的物理路径
        try {
            //以JPG格式保存图片
            oImage.Save(oFullName,System.Drawing.Imaging.ImageFormat.Jpeg);
            tImage.Save(tFullName,System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        catch(Exception ex)
        {
            throw ex;
        }
        finally
        {
            //释放资源
            oImage.Dispose();
            g.Dispose();
            tImage.Dispose();
        }
   
    } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值