在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中调试成功!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值