您的位置:首页 > 移动开发 > Objective-C

VS2005中使用FileUpload控件上传图片并自动生成缩略图(原创)

2006-05-05 19:03 736 查看
    本文借助vs2005中自带的FileUpload控件实现图片文件的上传并生成缩略图。
    实现过程:选择图片上传成功后,取得已经存在服务器的文件生成缩略图,并且判断是否是图片类型的文件,这个的判断可以在程序中修改,本程序只是判断了“image/bmp”、“image/gif”、“image/pjpeg”三种类型。
    代码如下:
    upfile.aspx文件




<%

@ Page Language="C#" AutoEventWireup="true" CodeFile="upfile.aspx.cs" Inherits="upfile_upfile" %>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">




<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">


    <title>无标题页</title>


</head>


<body>


    <form id="form1" runat="server">


    <div>


        <asp:FileUpload ID="FileUpload1" runat="server" />


        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" /><br />


        <asp:Label ID="Label1" runat="server"></asp:Label></div>


    </form>


</body>


</html>

    upfile.aspx.cs文件


using System;


using System.Data;


using System.Configuration;


using System.Collections;


using System.Web;


using System.Web.Security;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.WebControls.WebParts;


using System.Web.UI.HtmlControls;


using System.IO;




public partial class upfile_upfile : System.Web.UI.Page






{


    protected void Page_Load(object sender, EventArgs e)




    

{




    }


    protected void Button1_Click(object sender, EventArgs e)




    

{


        if (FileUpload1.HasFile)




        

{


            string fileContentType = FileUpload1.PostedFile.ContentType;


            if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg")




            

{


                string name = FileUpload1.PostedFile.FileName;                  // 客户端文件路径




                FileInfo file = new FileInfo(name);


                string fileName = file.Name;                                    // 文件名称


                string fileName_s = "s_" + file.Name;                             // 缩略图文件名称


                string webFilePath = Server.MapPath("file/" + fileName);        // 服务器端文件路径


                string webFilePath_s = Server.MapPath("file/" + fileName_s);  // 服务器端缩略图路径




                if (!File.Exists(webFilePath))




                

{


                    try




                    

{


                        FileUpload1.SaveAs(webFilePath);                                // 使用 SaveAs 方法保存文件


                        MakeThumbnail(webFilePath, webFilePath_s, 130, 130, "Cut");     // 生成缩略图方法


                        Label1.Text = "提示:文件“" + fileName + "”成功上传,并生成“" + fileName_s + "”缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:" + FileUpload1.PostedFile.ContentLength + "B";


                    }


                    catch (Exception ex)




                    

{


                        Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;


                    }


                }


                else




                

{


                    Label1.Text = "提示:文件已经存在,请重命名后上传";


                }


            }


            else




            

{


                Label1.Text = "提示:文件类型不符";


            }


        }


    }




    /**//// <summary>


    /// 生成缩略图


    /// </summary>


    /// <param name="originalImagePath">源图路径(物理路径)</param>


    /// <param name="thumbnailPath">缩略图路径(物理路径)</param>


    /// <param name="width">缩略图宽度</param>


    /// <param name="height">缩略图高度</param>


    /// <param name="mode">生成缩略图的方式</param>    


    public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)




    

{


        System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);




        int towidth = width;


        int toheight = height;




        int x = 0;


        int y = 0;


        int ow = originalImage.Width;


        int oh = originalImage.Height;




        switch (mode)




        

{


            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;


            default:


                break;


        }




        //新建一个bmp图片


        System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);




        //新建一个画板


        System.Drawing.Graphics g = 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, new System.Drawing.Rectangle(0, 0, towidth, toheight),


            new System.Drawing.Rectangle(x, y, ow, oh),


            System.Drawing.GraphicsUnit.Pixel);




        try




        

{


            //以jpg格式保存缩略图


            bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);


        }


        catch (System.Exception e)




        

{


            throw e;


        }


        finally




        

{


            originalImage.Dispose();


            bitmap.Dispose();


            g.Dispose();


        }


    }


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐