丛林高手指点迷津
如何在页面显示 类似于windowsxp的缩略图显示样式
与原图片的大小无关

解决方案 »

  1.   

    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="Thumbnail.aspx.vb"
     Inherits="aspxWeb.Thumbnail" %>
    <!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" runat="server" enctype="multipart/form-data">
          <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 eMeng.Exam
    {
    /// <summary>
    /// Thumbnail 的摘要说明。
    /// </summary>
    public class Thumbnail : 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 = "上载并显示缩略图";  } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {
    HttpFileCollection MyFileColl = HttpContext.Current.Request.Files; 
    HttpPostedFile MyPostedFile = MyFileColl[0];  if (MyPostedFile.ContentType.ToString().ToLower().IndexOf("image") < 0) 

    Response.Write("无效的图形格式。"); 
    return; 

    GetThumbNail(MyPostedFile.FileName, 100, 100, 
    MyPostedFile.ContentType.ToString(), false, MyPostedFile.InputStream); 
    }
    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; 

    }  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); 
    string strGuid = System.Guid.NewGuid().ToString().ToUpper(); 
    string strFileExt = strFileName.Substring(strFileName.LastIndexOf(".")); 
    Response.ContentType = strContentType; 
    MemoryStream MemStream = new MemoryStream(); 
    oImg.Save(MemStream, GetImageType(strContentType)); 
    MemStream.WriteTo(Response.OutputStream); 
    } }
    }
      

  2.   

    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;namespace CommonFunction
    {
    /// <summary>
    /// smallImg 的摘要说明。
    /// </summary>
    public class smallImg : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.WebControls.Label Label2;
    protected System.Web.UI.WebControls.Label Label3;
    protected System.Web.UI.WebControls.Button btnUp;
    protected System.Web.UI.WebControls.Image imageSource;
    protected System.Web.UI.WebControls.Image imageSmall;
    protected System.Web.UI.HtmlControls.HtmlInputFile upImage;

    //定义image类的对象
    System.Drawing.Image image,newimage;
    //图片路径
    protected string imagePath;
    //图片类型
    protected string imageType;
    //图片名称
    protected string imageName;
    //提供一个回调方法,用于确定Image对象在执行生成缩略图操作时何时提前取消执行
    //如果此方法确定 GetThumbnailImage 方法应提前停止执行,则返回 true;否则返回 false
    System.Drawing.Image.GetThumbnailImageAbort callb = null; private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btnUp.Click += new System.EventHandler(this.btnUp_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void btnUp_Click(object sender, System.EventArgs e)
    {
    string mPath; if("" != upImage.PostedFile.FileName)
    {
    imagePath= upImage.PostedFile.FileName;
    //取得图片类型
    imageType= imagePath.Substring(imagePath.LastIndexOf(".")+1);
    //取得图片名称
    imageName = imagePath.Substring(imagePath.LastIndexOf("\\")+1);
    //判断是否是JPG或者GIF图片,这里只是举个例子,并不一定必须是这两种图片
    if("jpg" != imageType && "gif" != imageType)
    {
    Response.Write("<script language='javascript'> alert('对不起!请您选择jpg或者gif格式的图片!');</script>");
    return;
    }
    else
    {
    try
    {
    //建立虚拟路径
    mPath=Server.MapPath("upFile");
    //保存到虚拟路径
    upImage.PostedFile.SaveAs(mPath+"\\"+imageName);
    //显示原图
    imageSource.ImageUrl = "upFile/"+imageName;
    //为上传的图片建立引用
    image=System.Drawing.Image.FromFile(mPath+"\\"+imageName);
    //生成缩略图
    newimage=image.GetThumbnailImage(100,100,callb,new System.IntPtr());
    //把缩略图保存到指定的虚拟路径
    newimage.Save(Server.MapPath("upFile")+"\\small"+imageName);
    //释放image对象占用的资源
    image.Dispose();
    //释放newimage对象的资源
    newimage.Dispose();
    //显示缩略图
    imageSmall.ImageUrl = "upFile/"+"small"+imageName; Response.Write("上传成功!");
    }
    catch
    {
    Response.Write("上传成功!");
    }

    }
    }

    }
    }
    }