asp.net2.0 上传图片(FileUpload控件) 并生成缩略图

记录,备忘:

(1)

using System.IO; //添加

(2)

在页面上放入一个FileUpload控件,id为“FileUpload1”,和一个“上传”按钮,id为“btnUpload”。

///
///
"上传"按钮
///
///
///
protected voidbtnUpload_Click(objectsender, EventArgse)
{
    stringserverPath = Server.MapPath("~/images/product");//设置图片路径

   
if(this.FileUpload1.HasFile)
    {
        stringname=FileUpload1.FileName;
        stringfName = this.txtImageName.Text;
        if(string.IsNullOrEmpty(fName))
        {
            fName = name;
        }
        stringtype = fName.Substring(fName.LastIndexOf(".") + 1).ToLower();           
        if(type == "jpg"|| type == "png"|| type == "bmp"|| type == "gif"|| type == "jpeg")
        {
            UpLoadImage(serverPath,fName);//执行上传图片,并生成缩略图
       
}
        else
      
{
            HttpContext.Current.Response.Write("");
            return;
        }
    }
    else
  
{
        HttpContext.Current.Response.Write(" ");
        return;
    }
    HttpContext.Current.Response.Write(" ");
}

///
///
执行上传图片操作,并生成缩略图
///
///
///
private voidUpLoadImage(stringserverPath, stringfName)
{
    if(!File.Exists(serverPath))
    {
         Directory.CreateDirectory(serverPath);
         Directory.CreateDirectory(serverPath + "_thumb");
    }
    stringfPath = serverPath + "\\"+ fName;//文件实际路径

    Stringtpath = serverPath + "_thumb\\"+ fName;//缩略图路径 

    if(!File.Exists(tpath) && !File.Exists(fPath))
    {       
        
this.FileUpload1.SaveAs(fPath);//上传到图片路径       
        
ImageClass.MakeThumbnail(fPath, tpath, 180, 117, "w"); //调用ImageClass类的MakeThumbnail()方法,生成缩略图
         this.myImage.ImageUrl = "~/images/product_thumb"+ "\\"+ fName;
    }
    else
  
{
         HttpContext.Current.Response.Write("");
         return;
    }
}

(3)ImageClass类(转,网址忘记了)

//add
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web.UI;
usingSystem.IO;

///
///
生成缩略图
///
///
源图路径(物理路径)
///
缩略图路径(物理路径)
///
缩略图宽度
///
缩略图高度
///
生成缩略图的方式 
public static voidMakeThumbnail(stringoriginalImagePath, stringthumbnailPath, intwidth, intheight, stringmode)
{
    System.Drawing.ImageoriginalImage = System.Drawing.Image.FromFile(originalImagePath);

    inttowidth = width;
    inttoheight = height;

    intx = 0;
    inty = 0;
    intow = originalImage.Width;
    intoh = originalImage.Height;

    if(ow < towidth && oh < toheight)
    {
        originalImage.Save(thumbnailPath);
    }
    else
  
{

        switch(mode.ToUpper())
        {
            case"HW"://指定高宽缩放(可能变形)         
               
break;
            case"W"://指定宽,高按比例           
               
toheight = originalImage.Height * width / originalImage.Width;
                break;
            case"H"://指定高,宽按比例
               
towidth = originalImage.Width * height / originalImage.Height;
                break;
            case"CUT"://指定高宽裁减(不变形)         
               
if((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                {
                    h = originalImage.Height;
                    w = originalImage.Height * towidth / toheight;
                    y = 0;
                    x = (originalImage.Width - ow) / 2;
                }
                else
              
{
                    w = originalImage.Width;
                    h = originalImage.Width * height / towidth;
                    x = 0;
                    y = (originalImage.Height - oh) / 2;
                }
                break;
            case"AUTO": //自动适应高度
               
if(ow > oh)
                {
                    //newwidth = 200;
                  
toheight = (int)((double)oh / (double)ow * (double)towidth);
                }
                else
              
{
                    //newheight = 200;
                  
towidth = (int)((double)ow / (double)oh * (double)toheight);
                }
                break;
            default:
                break;
        }

        //新建一个bmp图片
       
System.Drawing.Imagebitmap = newSystem.Drawing.Bitmap(towidth, toheight);

        //新建一个画板
       
System.Drawing.Graphicsg = System.Drawing.Graphics.FromImage(bitmap);

        //设置高质量插值法
       
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

        //设置高质量,低速度呈现平滑程度
       
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        //清空画布并以透明背景色填充
       
g.Clear(System.Drawing.Color.Transparent);

        //在指定位置并且按指定大小绘制原图片的指定部分
       
g.DrawImage(originalImage, newSystem.Drawing.Rectangle(0, 0, towidth, toheight),
            newSystem.Drawing.Rectangle(x, y, ow, oh),
            System.Drawing.GraphicsUnit.Pixel);

        try
      
{
            //以jpg格式保存缩略图
           
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

        }
        catch(System.Exceptione)
        {
            throwe;
        }
        finally
      
{

            bitmap.Dispose();
            g.Dispose();
        }
    }
    originalImage.Dispose();
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-626021/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-626021/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值