我用System.Drawing.Image pThumbnail = image.GetThumbnailImage(80, 100, null, new IntPtr());语句执行了生成缩略图的操作,但是图片须保存后才可以显示,有没有办法直接用pThumbnail对象将生成的图片显示,而不保存吗?

解决方案 »

  1.   

    Imports System
    Imports System.Web
    Imports System.Drawing
    Imports System.IO
    Imports System.Drawing.ImagingPublic Class Thumbnail
        Inherits System.Web.UI.Page    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
        Protected WithEvents Button2 As System.Web.UI.WebControls.Button
        Protected WithEvents btn_Add As System.Web.UI.WebControls.Button
        Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
        Protected WithEvents Label2 As System.Web.UI.WebControls.Label
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            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)
            ''''获取客户端发送的文件的 MIME 内容类型
            If LCase(MyPostedFile.ContentType).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 String) 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 As String, ByVal iWidth As Integer, ByVal iheight As Integer, ByVal strContentType As String, ByVal blnGetFromFile As Boolean, ByVal ImgStream As IO.Stream)
            Dim oImg As Image
            If blnGetFromFile Then
                oImg = oImg.FromFile(strFileName)    ''''从指定的文件创建 Image 对象
            Else
                oImg = oImg.FromStream(ImgStream)    ''''从指定的数据流创建 Image 对象
            End If
            '''''GetThumbnailImage方法返回此 Image 对象的缩略图。
            oImg = oImg.GetThumbnailImage(iWidth, iheight, Nothing, (New IntPtr).Zero)
            '以下显示在屏幕上
            Response.ContentType = strContentType
            ''''创建其支持存储区为内存的流MemStream
            Dim MemStream As New MemoryStream
            ' 注意:这里如果直接用 oImg.Save(Response.OutputStream, GetImageType(strContentType))
            ' 对不同的格式可能会出错,比如Png格式。
            '''save的方法将此图像以指定的格式保存到指定的流中。
            oImg.Save(MemStream, GetImageType(strContentType))
            MemStream.WriteTo(Response.OutputStream)
        End Sub    Private Sub btn_Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Add.Click
            If (Nothing <> Request.Form("btn_Add")) Then
                TextBox1.Text = "btn_Add"
            End If
            If (Nothing <> Request.Form("Button1")) Then
                TextBox1.Text = "Button1"
            End If    End Sub
    End Class
      

  2.   

    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="Thumbnail.aspx.vb" Inherits="MVC.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" encType="multipart/form-data" runat="server">
    <INPUT type=file name=file width="600"><asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 352px; POSITION: absolute; TOP: 44px" runat="server" Width="152px" Height="64px">Label</asp:Label><br><br>
    <asp:button id=Button1 runat="server"></asp:button>
            <asp:Button id="btn_Add" style="Z-INDEX: 101; LEFT: 364px; POSITION: absolute; TOP: 212px" runat="server" Text="Button" Width="88px" Height="32px"></asp:Button>
            <asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 344px; POSITION: absolute; TOP: 128px" runat="server" Width="144px" Height="28px"></asp:TextBox>
            </form>
        </body>
    </HTML>