asp.net上传图片并生成缩略图

前台代码:
<%@ Page language="c#" Codebehind="TestWebForm.aspx.cs" AutoEventWireup="false" Inherits="Example.TestWebForm" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    
<HEAD>
        
<title>在ASP.NET里轻松实现缩略图</title>
        
<meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
        
<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
        
<meta content="JavaScript" name="vs_defaultClientScript">
        
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    
</HEAD>
    
<body MS_POSITIONING="GridLayout">
        
<asp:label id="Label1" runat="server"></asp:label>
        
<form id="Form1" method="post" encType="multipart/form-data" runat="server">
            
<INPUT type="file" name="file" width="600"><br>
            
<br>
            
<asp:Button id="Button1" runat="server"></asp:Button></form>
    
</body>
</HTML>

后台代码:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO; 
using System.Drawing.Imaging;

namespace Example
{
    
/// <summary>
    
/// TestWebForm 的摘要说明。
    
/// </summary>

    public class TestWebForm : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.Label Label1;
        
protected System.Web.UI.WebControls.Button Button1;

        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            Label1.Text = "<h3>在ASP.NET里轻松实现缩略图</h3>"
            Button1.Text 
= "上载并显示缩略图"

        }


        
Web 窗体设计器生成的代码

        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            HttpFileCollection MyFileColl 
= HttpContext.Current.Request.Files;   //获取客户端上载的文件(多部件 MIME 格式)集合
            HttpPostedFile MyPostedFile = MyFileColl[0];  //获取第一个文件

            
if (MyPostedFile.ContentType.ToString().ToLower().IndexOf("image"< 0
            

                Response.Write(
"无效的图形格式。"); 
                
return
            }
 
            GetThumbNail(MyPostedFile.FileName, 
100100
                MyPostedFile.ContentType.ToString(), 
false, MyPostedFile.InputStream); 
        }


        
/// <summary>
        
/// 得到图片的类型
        
/// </summary>
        
/// <param name="strContentType"></param>
        
/// <returns></returns>

        private System.Drawing.Imaging.ImageFormat GetImageType(object strContentType) 
        

            
if ((strContentType.ToString().ToLower()) == "image/pjpeg"
            

                
return System.Drawing.Imaging.ImageFormat.Jpeg; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/gif"
            

                
return System.Drawing.Imaging.ImageFormat.Gif; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/bmp"
            

                
return System.Drawing.Imaging.ImageFormat.Bmp; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/tiff"
            

                
return System.Drawing.Imaging.ImageFormat.Tiff; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/x-icon"
            

                
return System.Drawing.Imaging.ImageFormat.Icon; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/x-png"
            

                
return System.Drawing.Imaging.ImageFormat.Png; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/x-emf"
            

                
return System.Drawing.Imaging.ImageFormat.Emf; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/x-exif"
            

                
return System.Drawing.Imaging.ImageFormat.Exif; 
            }
 
            
else if ((strContentType.ToString().ToLower()) == "image/x-wmf"
            

                
return System.Drawing.Imaging.ImageFormat.Wmf; 
            }
 
            
else 
            

                
return System.Drawing.Imaging.ImageFormat.MemoryBmp; 
            }
 
        }
 

        
/// <summary>
        
/// 得到缩略图
        
/// </summary>
        
/// <param name="strFileName">文件名</param>
        
/// <param name="iWidth">宽度</param>
        
/// <param name="iheight">高度</param>
        
/// <param name="strContentType"></param>
        
/// <param name="blnGetFromFile">是否从文件创建Image对象</param>
        
/// <param name="ImgStream"></param>

        private void GetThumbNail(string strFileName, int iWidth, int iheight, 
            
string strContentType, bool blnGetFromFile, System.IO.Stream ImgStream) 
        

            System.Drawing.Image oImg;
        
            
if (blnGetFromFile) 
            

                oImg 
= System.Drawing.Image.FromFile(strFileName); 
            }
 
            
else 
            

                oImg 
= System.Drawing.Image.FromStream(ImgStream); 
            }
 
            oImg 
= oImg.GetThumbnailImage(iWidth, iheight, null, IntPtr.Zero);   //GetThumbnailImage方法是返回此Image对象的缩略图
            string strGuid = System.Guid.NewGuid().ToString().ToUpper();  //初始化 Guid 类的新实例
            string strFileExt = strFileName.Substring(strFileName.LastIndexOf("."));  //得到图片的后缀
            Response.ContentType = strContentType; 
            MemoryStream MemStream 
= new MemoryStream(); //创建其支持存储区为内存的流
            oImg.Save(MemStream, GetImageType(strContentType)); 
            MemStream.WriteTo(Response.OutputStream);  
//WriteTo方法是将此内存流的整个内容写入另一个流中
        }
 
    }

}

posted @ 2006-09-28 10:59  MSDI  阅读(420)  评论(0编辑  收藏  举报