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


    以前,在页面上实现缩略图必须借助第三方组件。现在,有了.NET,就可以很轻松地实现缩略图。下面就是实现缩略图的例子。

    查看例子
    http://dotnet.aspx.cc/Exam/Thumbnail.aspx

    代码如下: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

    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 = "上载并显示缩略图";
    }
    
    #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);
    }
    }
    }
  • 相关阅读:
    Google搜索解析
    情绪管理--不要总做“好脾气”的人。
    全排列的实现
    ORACLE触发器具体解释
    3、应用设置之界面标注
    C++ 排序函数 sort(),qsort()的使用方法
    muduo网络库使用心得
    探索WebKit内核(一)------ 菜鸟起步
    eclipse+webservice开发实例
    使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
  • 原文地址:https://www.cnblogs.com/lzhdim/p/1368855.html
Copyright © 2020-2023  润新知