在ASP.NET裏輕鬆實現縮略圖

  以前,在頁面上實現縮略圖必須藉助第三方組件。現在,有了.NET,就可以很輕鬆地實現縮略圖。下面就是實現縮略圖的例子。 

Thumbnail.aspx 

<%@ 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>

 Thumbnail.aspx.vb

Imports System
Imports
 System.Web
Imports
 System.Drawing
Imports
 System.IO
Imports
 System.Drawing.Imaging

Public 
Class Thumbnail
  
Inherits
 System.Web.UI.Page
  
Protected WithEvents Label1 As
 System.Web.UI.WebControls.Label
  
Protected WithEvents Button1 As
 System.Web.UI.WebControls.Button

Web Form Designer Generated Code


  
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Label1.Text 
= "<h3>在ASP.NET裏輕鬆實現縮略圖</h3>"

    Button1.Text 
= "上載並顯示縮略圖"
  
End Sub


  
Private Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles Button1.Click
    
Dim MyFileColl As HttpFileCollection =
 HttpContext.Current.Request.Files
    
Dim MyPostedFile As HttpPostedFile = MyFileColl.Item(0
)
    
If LCase(MyPostedFile.ContentType.ToString()).IndexOf("image"< 0 Then

      Response.Write(
"無效的圖形格式。")
      
Exit Sub

    
End If
    GetThumbNail(MyPostedFile.FileName, 
100100, MyPostedFile.ContentType.ToString(),_
     
False
, MyPostedFile.InputStream)
  
End Sub


  
Private Function GetImageType(ByVal strContentType) As System.Drawing.Imaging.ImageFormat
    
Select Case
 (strContentType.ToString().ToLower())
      
Case "image/pjpeg"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Jpeg
      
Case "image/gif"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Gif
      
Case "image/bmp"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Bmp
      
Case "image/tiff"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Tiff
      
Case "image/x-icon"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Icon
      
Case "image/x-png"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Png
      
Case "image/x-emf"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Emf
      
Case "image/x-exif"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Exif
      
Case "image/x-wmf"

        GetImageType 
= System.Drawing.Imaging.ImageFormat.Wmf
      
Case Else

        GetImageType 
= System.Drawing.Imaging.ImageFormat.MemoryBmp
    
End Select

  
End Function


  
Private Sub GetThumbNail(ByVal strFileName, ByVal iWidth, ByVal iheight, ByVal strContentType, _
  
ByVal blnGetFromFile, ByVal
 ImgStream)
    
Dim oImg As
 Image
    
If blnGetFromFile Then

      oImg 
= oImg.FromFile(strFileName)
    
Else

      oImg 
= oImg.FromStream(ImgStream)
    
End If

    oImg 
= oImg.GetThumbnailImage(iWidth, iheight, Nothing, (New IntPtr()).Zero)
    
Dim strGuid As String = (New
 Guid()).NewGuid().ToString().ToUpper()
    
Dim strFileExt As String = strFileName.Substring(strFileName.LastIndexOf("."
))
    
'保存到本地

    'oImg.Save(Server.MapPath("images") + "" + strGuid + strFileExt, GetImageType(strContentType))
    '直接輸出url文件
    'Response.Redirect("images/" + strGuid + strFileExt)
    '以下顯示在屏幕上
    Response.ContentType = strContentType
    
Dim MemStream As New
 MemoryStream()
    
' 注意:這裏如果直接用 oImg.Save(Response.OutputStream, GetImageType(strContentType))

    ' 對不同的格式可能會出錯,比如Png格式。
    oImg.Save(MemStream, GetImageType(strContentType))
    MemStream.WriteTo(Response.OutputStream)
  
End Sub


End Class

 C#

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 
= "上載並顯示縮略圖"


    }


    
Web 窗體設計器生成的代碼

    
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, 
100100

            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); 
    }
 

}

}

 點擊查看演示該代碼在vs.2003中調試成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章