首页 > 编程 > .NET > 正文

代码实例:在ASP.NET中上传图片并生成缩略图

2024-07-10 13:08:45
字体:
来源:转载
供稿:网友
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();
   }
}  
国内最大的酷站演示中心!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表