将图片缩略上传

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:VS2015

作者:张海锋

撰写时间:2019/5/15

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在我们做项目中,通常用户信息需要上传图片,而因为上传的图片大小不一,

所以我们需要通过代码来把图片上传到数据库保存,下面就是实现图片缩略效果:

private void btnUploadPicture_Click(object sender, System.EventArgs e)

{

   //检查上传文件的格式是否有效

   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 = 100; //设置缩略图初始宽度

   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();

   }

}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值