• 缩略图的实现


     

    以前,在页面上实现缩略图必须借助第三方组件。现在,有了.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

     

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

        }

     

    }

    }       

  • 相关阅读:
    [HAOI2009] 毛毛虫
    [NOI2015]品酒大会
    SDOI2016 生成魔咒
    [POJ2406]字符串的幂
    [SPOJ705]不同的子串
    快速幂和矩阵快速幂
    对于最近的一些日常总结by520(17.10.18)
    思维训练
    趣味性的高智商(贼有意思)的题(坑)
    C++手动开O2优化
  • 原文地址:https://www.cnblogs.com/hugo/p/452355.html
Copyright © 2020-2023  润新知