上传图片并生成缩略图

(1)

using System.IO; //添加

(2)

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

/// <summary> 
///
"上传"按钮 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
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("<script>alert('图片格式不对!');</script>"); 
            return
        } 
    } 
    else 
   
{ 
        HttpContext.Current.Response.Write(" <script>alert('请选择要上传的文件') </script>"); 
        return
    } 
    HttpContext.Current.Response.Write(" <script>alert('文件上传成功') </script>"); 


/// <summary> 
///
执行上传图片操作,并生成缩略图 
/// </summary> 
/// <param name="serverPath"></param> 
/// <param name="fName"></param> 
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("<script>alert('图片已存在!');</script>"); 
         return
    } 
}

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

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

/// <summary> 
///
生成缩略图 
/// </summary> 
/// <param name="originalImagePath">
源图路径(物理路径)</param> 
/// <param name="thumbnailPath">
缩略图路径(物理路径)</param> 
/// <param name="width">
缩略图宽度</param> 
/// <param name="height">
缩略图高度</param> 
/// <param name="mode">
生成缩略图的方式</param>  
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) 
                { 
                    oh = originalImage.Height; 
                    ow = originalImage.Height * towidth / toheight; 
                    y = 0; 
                    x = (originalImage.Width - ow) / 2; 
                } 
                else 
               
{ 
                    ow = originalImage.Width; 
                    oh = 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(); 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值