当前位置:编程学习 > C#/ASP.NET >>

求asp.net上传图片并同时生成缩略图的代码啊

求asp.net上传图片并同时生成缩略图的代码啊
希望各位发的不仅仅是CS代码,还有HTML的代码. --------------------编程问答-------------------- 我学 的是C#的,最好是C#的,如果是VB的,我也学学.
谢谢拉! --------------------编程问答-------------------- 缩略图可以动态生成.不用上传的时候再生成个缩略图保存.

参考VS 2005 帮助.即有缩略图源码.学习GDI+,即可任意操作图片. --------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 支持!!! --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 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;
using System.Net;
using System.Text.RegularExpressions;

--------------------编程问答-------------------- namespace _51aspxImgUpload
{
    /// <summary>
    /// 上传图片生成缩略图及水印 (来自:http://www.51aspx.com/CV/ImageUpload)
    /// </summary>
    public partial class _Default : 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 = "x_" + file.Name;                           // 缩略图文件名称
                    string fileName_sy = "text_" + file.Name;                         // 水印图文件名称(文字)
                    string fileName_syp = "water_" + file.Name;                       // 水印图文件名称(图片)
                    string webFilePath = Server.MapPath("ImgUpload/" + fileName);        // 服务器端文件路径
                    string webFilePath_s = Server.MapPath("ImgUpload/" + fileName_s);  // 服务器端缩略图路径
                    string webFilePath_sy = Server.MapPath("ImgUpload/" + fileName_sy); // 服务器端带水印图路径(文字)
                    string webFilePath_syp = Server.MapPath("ImgUpload/" + fileName_syp); // 服务器端带水印图路径(图片)
                    string webFilePath_sypf = Server.MapPath("51aspx.png"); // 服务器端水印图路径(图片)

                    if (!File.Exists(webFilePath))
                    {
                        try
                        {
                            FileUpload1.SaveAs(webFilePath);                                // 使用 SaveAs 方法保存文件
                            AddWater(webFilePath, webFilePath_sy);
                            AddWaterPic(webFilePath, webFilePath_syp, webFilePath_sypf);
                            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();
            }
        }

        /**/
        /// <summary>
        /// 在图片上增加文字水印
        /// </summary>
        /// <param name="Path">原服务器图片路径</param>
        /// <param name="Path_sy">生成的带文字水印的图片路径</param>
        protected void AddWater(string Path, string Path_sy)
        {
            string addText = "51aspx.com";
            System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
            g.DrawImage(image, 0, 0, image.Width, image.Height);
            System.Drawing.Font f = new System.Drawing.Font("Verdana", 60);
            System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Green);

            g.DrawString(addText, f, b, 35, 35);
            g.Dispose();

            image.Save(Path_sy);
            image.Dispose();
        }

        /**/
        /// <summary>
        /// 在图片上生成图片水印
        /// </summary>
        /// <param name="Path">原服务器图片路径</param>
        /// <param name="Path_syp">生成的带图片水印的图片路径</param>
        /// <param name="Path_sypf">水印图片路径</param>
        protected void AddWaterPic(string Path, string Path_syp, string Path_sypf)
        {
            System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
            System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
            g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
            g.Dispose();

            image.Save(Path_syp);
            image.Dispose();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            //自动保存远程图片
                WebClient client = new WebClient();
                //备用Reg:<img.*?src=([\"\'])(http:\/\/.+\.(jpg|gif|bmp|bnp))\1.*?>
                Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", RegexOptions.IgnoreCase);
                MatchCollection m = reg.Matches(TextBox1.Text);

                foreach (Match math in m)
                {
                    string imgUrl = math.Groups[1].Value;

                    //在原图片名称前加YYMMDD重名名并上传

                    Regex regName = new Regex(@"\w+.(?:jpg|gif|bmp|png)", RegexOptions.IgnoreCase);

                    string strNewImgName = DateTime.Now.ToShortDateString().Replace("-", "") + regName.Match(imgUrl).ToString();

                    try
                    {
                        //保存图片
                        client.DownloadFile(imgUrl, Server.MapPath("ImgUpload/Auto/" + strNewImgName));

                    }
                    catch
                    {
                    }
                    finally
                    {

                    }

                client.Dispose();
            }

            Response.Write("<script>alert('远程图片保存成功,保存路径为ImgUpload/auto')</script>");

        }
    }
}
--------------------编程问答-------------------- mark
--------------------编程问答-------------------- 收藏 --------------------编程问答-------------------- 学习
--------------------编程问答-------------------- 去我的博客看看吧,详尽的回答! --------------------编程问答--------------------

'----------------------上传图片
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
'--------------------数据库连接
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
Imports System.Data.SqlClient
Imports System.Math



Dim imgsavepath As String     '----------原图片路径
    Dim imgsltpath As String     '----------缩略图片路径
    Dim sss As String = "**"

‘上传图片并生成缩略图保存到文件夹 ,经过试验 是成功的 不过是VB的代码
Dim image, newimage As System.Drawing.Image
        Dim width, height, newwidth, newheight As Integer
        Dim callb As System.Drawing.Image.GetThumbnailImageAbort
        If imgsavepath <> "" Then System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(imgsavepath))
        Dim uploadname As String = inputfile.Value '获取待上传图片的完整路径,包括文件名 
        Dim imagename As String = "" '上传后的图片名,以当前时间为文件名,确保文件名没有重复
        '  Dim filetext As String = LCase(Right(Trim(inputfile.Value), 3))
        '  Dim filetext1 As String = LCase(Right(Trim(inputfile.Value), 4))
        If inputfile.Value <> "" Then
            Dim stuff As String = uploadname.Substring(uploadname.LastIndexOf(".") + 1) '获得上传的图片的后缀名
            If stuff = "gif" Or stuff = "jpg" Or stuff = "jpeg" Or stuff = "bmp" Then
                imagename = DateTime.Now.Ticks.ToString + "." + stuff

                inputfile.PostedFile.SaveAs(Server.MapPath("userimages/") + imagename)
                imgsavepath = Server.MapPath("userimages/") + imagename
                '--缩略图
                image = System.Drawing.Image.FromFile(imgsavepath)
                width = image.Width
                height = image.Height
                If width > height Then
                    newwidth = 125
                    newheight = image.Height / image.Width * newwidth
                Else
                    newheight = 104
                    newwidth = image.Width / image.Height * newheight
                End If
                newimage = image.GetThumbnailImage(newwidth, newheight, callb, New System.IntPtr())
                newimage.Save(Server.MapPath("userimages/suolvetu/" + imagename))
                imgsltpath = "userimages/suolvetu/" + imagename
                image.Dispose()
                '-------------------------
                imgtou.ImageUrl = imgsltpath 'Server.MapPath("userimages/suolvetu/" + imagename)


                response.write sss & "成功上传图片"
                Response.Write(imgsavepath)
                Response.Write("<br/>")
                Response.Write(inputfile.Value)
            Else
                response.write  sss & "请选择正确格式的图片"
                Exit Sub
            End If

        Else
            response.write sss & "请选择上传的图片"
            Exit Sub
        End If



<asp:Image ID="imgtou"  Height="104px" Width="100px" runat ="server" ImageAlign ="AbsMiddle" ImageUrl ="~/sysimage/01.gif" />
     <input id="inputfile" type ="file" runat ="server" style="width: 208px" />
    <asp:Button ID="shangch" runat="server" Text="上传" Width="39px" Enabled="False" />
--------------------编程问答-------------------- 若要保存到数据库:

cmd = New SqlCommand("INSERT INTO 用户表(原图,缩略图) VALUES('" & imgsavepath.Trim & "','" & imgsltpath.trim & "')", conn)
        cmd.ExecuteNonQuery()
         其他字段自己加
--------------------编程问答-------------------- 发布之后正确吗 你看看 有可能路径那里出问题  --------------------编程问答--------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UploadModifyImg.aspx.cs" Inherits="register_UploadModifyImg" %>

<!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 id="Head1" runat="server">
    <title></title>

    <script type="text/javascript">
        function upload() {
            var button = document.getElementById("Button1");
            button.click();
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <table border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td id="myimg" style="text-align: center; width: 113px;">
                <img alt="图片不能大于512K" id="photoshow" src="../images/photo.gif" width="113" height="129"
                    runat="server" style="padding-top: 0px" />
            </td>
        </tr>
        <tr>
            <td>
                <input id="Photo" type="file" onchange="upload()" runat="server" style="width: 112px" />
            </td>
        </tr>
    </table>
    <span id="photo_span" style="color: Red;"></span>
    <asp:Button ID="Button1" runat="server" Style="display: none" Text="Button" OnClick="Button1_Click" />
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class register_UploadImg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        HttpPostedFile file = Request.Files[0];
        if (!isAllowdPictureType(file))
        {
            this.ClientScript.RegisterStartupScript(this.GetType(), string.Empty, "alert('上传文件格式不正确!');", true);
            return;
        }
        else if (file.ContentLength > 500000)
        {
            this.ClientScript.RegisterStartupScript(this.GetType(), string.Empty, "alert('上传文件大小超过500K!');", true);
            return;
        }
        else
        {
            string tempPicNum = Utility.CommonUtility.MakeGuid() + ".jpg";
            Photo.PostedFile.SaveAs(Server.MapPath("temp/" + tempPicNum));
            photoshow.Src = "../register/temp/" + tempPicNum;
            Session["pic"] = file;
        }
    }

    private bool isAllowdPictureType(HttpPostedFile file)
    {
        if (string.IsNullOrEmpty(file.FileName))
        {
            return true;
        }
        string suffix = file.FileName.Substring(file.FileName.LastIndexOf('.') + 1).ToLower();
        string[] allowedSuffix = { "jpg", "bmp", "png", "jpeg", "gif" };
        bool allowed = false;
        foreach (string item in allowedSuffix)
        {
            if (object.Equals(item, suffix))
            {
                allowed = true;
                break;
            }
        }
        return allowed;
    }
}


以上页面为UploadImg.aspx,如果你要做一个无刷新的,你就在另一个页面   <iframe src="UploadImg.aspx" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" tabindex="50" style="width: 113px; " ></iframe>
--------------------编程问答--------------------
    #region 上傳
    protected void btnUp_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(imageUpload.PostedFile.FileName))
        {
            myscript = @"alert('對不起,請選擇要上傳的文件')";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myscript, true);
        }
        string xfilename = "X" + DateTime.Now.ToString("yyyyMMddhhmmss");
        string dfilename = "D" + DateTime.Now.ToString("yyyyMMddhhmmss");

        string filePath = imageUpload.PostedFile.FileName;
        string fileEx = filePath.Substring(filePath.LastIndexOf(".") + 1);
        string serverpath1 = Server.MapPath(@"uploadpic\") + xfilename + "." + fileEx;
        string serverpath2 = Server.MapPath(@"uploadpic\") + dfilename + "." + fileEx;


        //判斷圖片格式
        if (fileEx == "jpg" || fileEx == "bmp" || fileEx == "gif" || fileEx == "jpeg")
        {

            System.Drawing.Image image, newimage;
            //保存大圖
            imageUpload.SaveAs(serverpath2);
            //生成略圖
            image = System.Drawing.Image.FromFile(serverpath2);
            System.Drawing.Image.GetThumbnailImageAbort callb = null;
            newimage = image.GetThumbnailImage(100, 80, callb, new System.IntPtr());
            //把略圖保存到指定的虛擬路徑
            newimage.Save(serverpath1);
            //釋放image對象佔用資源
            image.Dispose();
            newimage.Dispose();
            lblImage.Text = "<img src='uploadpic/" + xfilename + "." + fileEx + "' width='140' height='110'/>";
            lblImgurl.Text = xfilename + "." + fileEx;
        }
        else
        {
            myscript = @"alert('對不起,圖片格式不正確')";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myscript, true);
        }
    }
    #endregion --------------------编程问答-------------------- 这是很久前的代码了 --------------------编程问答-------------------- 用缩略图组件吧 www.wave12.com
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,