在ASP.NET裡輕鬆實現縮圖

來源:互聯網
上載者:User
以前,在頁面上實現縮圖必須藉助第三方組件。現在,有了.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 SystemImports System.WebImports System.DrawingImports System.IOImports System.Drawing.ImagingPublic Class ThumbnailInherits System.Web.UI.PageProtected WithEvents Label1 As System.Web.UI.WebControls.LabelProtected 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 SubPrivate 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 RegionPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadLabel1.Text = "<h3>在ASP.NET裡輕鬆實現縮圖</h3>"Button1.Text = "上傳並顯示縮圖"End SubPrivate Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.ClickDim MyFileColl As HttpFileCollection = HttpContext.Current.Request.FilesDim MyPostedFile As HttpPostedFile = MyFileColl.Item(0)If LCase(MyPostedFile.ContentType.ToString()).IndexOf("image") < 0 ThenResponse.Write("無效的圖形格式。")Exit SubEnd IfGetThumbNail(MyPostedFile.FileName, 100, 100, MyPostedFile.ContentType.ToString(),_False, MyPostedFile.InputStream)End SubPrivate Function GetImageType(ByVal strContentType) As System.Drawing.Imaging.ImageFormatSelect Case (strContentType.ToString().ToLower())Case "image/pjpeg"GetImageType = System.Drawing.Imaging.ImageFormat.JpegCase "image/gif"GetImageType = System.Drawing.Imaging.ImageFormat.GifCase "image/bmp"GetImageType = System.Drawing.Imaging.ImageFormat.BmpCase "image/tiff"GetImageType = System.Drawing.Imaging.ImageFormat.TiffCase "image/x-icon"GetImageType = System.Drawing.Imaging.ImageFormat.IconCase "image/x-png"GetImageType = System.Drawing.Imaging.ImageFormat.PngCase "image/x-emf"GetImageType = System.Drawing.Imaging.ImageFormat.EmfCase "image/x-exif"GetImageType = System.Drawing.Imaging.ImageFormat.ExifCase "image/x-wmf"GetImageType = System.Drawing.Imaging.ImageFormat.WmfCase ElseGetImageType = System.Drawing.Imaging.ImageFormat.MemoryBmpEnd SelectEnd FunctionPrivate Sub GetThumbNail(ByVal strFileName, ByVal iWidth, ByVal iheight, ByVal strContentType, _ByVal blnGetFromFile, ByVal ImgStream)Dim oImg As ImageIf blnGetFromFile ThenoImg = oImg.FromFile(strFileName)ElseoImg = oImg.FromStream(ImgStream)End IfoImg = 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 = strContentTypeDim MemStream As New MemoryStream()' 注意:這裡如果直接用 oImg.Save(Response.OutputStream, GetImageType(strContentType))    ' 對不同的格式可能會出錯,比如Png格式。    oImg.Save(MemStream, GetImageType(strContentType))MemStream.WriteTo(Response.OutputStream)End SubEnd 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 Form設計器產生的程式碼        override protected void OnInit(EventArgs e){//            // CODEGEN: 該調用是 ASP.NET Web Form設計器所必需的。            //            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);}        #endregionprivate 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);}}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.