当前位置:中国站长下载文章中心网页编程.NET编程 → 在ASP.NET里轻松实现缩略图

在ASP.NET里轻松实现缩略图

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 9:10:36
     以前,在页面上实现缩略图必须借助第三方组件。现在,有了.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
  #Region " Web Form Designer Generated Code "
  'This call is required by the Web Form Designer.
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  End Sub
  Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
  'CODEGEN: This method call is required by the Web Form Designer
  'Do not modify it using the code editor.
  InitializeComponent()
  End Sub
  #End Region
  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 Object, ByVal 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, 100, 100, 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
  
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。