首页 > 编程 > .NET > 正文

ASP.NET中图片显示方法实例

2024-07-10 13:29:15
字体:
来源:转载
供稿:网友
这篇文章主要介绍了ASP.NET中图片显示方法,实例分析了ASP.NET图片显示所涉及的图片路径、缩略图及更新数据库图片浏览次数等相关技巧,需要的朋友可以参考下
 

本文实例讲述了ASP.NET中图片的显示方法。分享给大家供大家参考。具体如下:

genimage.ashx:

复制代码代码如下:
<%@ WebHandler Language="C#" Class="netpix.ImageGenerator" %>

 

genimage.ashx.cs:
 

  1. // Copyright (C) 2003 by Greg Ennis 
  2. // (mailto:greg@ennis.net) 
  3. // 
  4. // The contents of this file are subject to the Artistic License (the "License"). 
  5. // You may not use this file except in compliance with the License.  
  6. // You may obtain a copy of the License at: 
  7. // http://www.opensource.org/licenses/artistic-license.html 
  8. using System; 
  9. using System.Collections; 
  10. using System.ComponentModel; 
  11. using System.Data; 
  12. using System.Data.SqlClient; 
  13. using System.Drawing; 
  14. using System.Web; 
  15. using System.IO; 
  16. using System.Configuration; 
  17. using System.Web.SessionState; 
  18. using System.Web.UI; 
  19. using System.Web.UI.WebControls; 
  20. using System.Web.UI.HtmlControls; 
  21. namespace netpix 
  22.   public class ImageGenerator : IHttpHandler  
  23.   {  
  24.     public bool IsReusable  
  25.     { get { return true; } }  
  26.     public void ProcessRequest(HttpContext Context)  
  27.     {  
  28.       // Get the image filename and album root path from the database 
  29.       //图片浏览次数 
  30.       int numviews; 
  31.       //图片数据库中的ID 
  32.       int picid = Convert.ToInt32(Context.Request["id"]); 
  33.       //图片路径  
  34.       string imgpath = npdata.GetPathToPicture(picid, out numviews); 
  35.       // Writing an image to output stream 
  36.       Context.Response.ContentType = "image/jpg"
  37.       // 'thumbnail' means we are requesting a thumbnail 
  38.       //显示缩略图 
  39.       if (Context.Request["thumbnail"] != null
  40.       { 
  41.         // Need to load the image, resize it, and stream to the client. 
  42.         // Calculate the scale so as not to stretch or distort the image. 
  43.         Bitmap bmp = new Bitmap(imgpath); 
  44.         float scale = 150.0f / System.Math.Max(bmp.Height, bmp.Width); 
  45.         System.Drawing.Image thumb = bmp.GetThumbnailImage((int)(bmp.Width * scale), (int)(bmp.Height * scale), null, System.IntPtr.Zero); 
  46.         thumb.Save(Context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); 
  47.         bmp.Dispose(); 
  48.         thumb.Dispose(); 
  49.       } 
  50.       else 
  51.       { 
  52.         // Stream directly from the file 
  53.         // Get the stream and send it out the response 
  54.         System.IO.FileStream fs = File.Open(imgpath, FileMode.Open, FileAccess.Read, FileShare.Read); 
  55.         const int byteLength = 8192; 
  56.         byte[] bytes = new byte[byteLength]; 
  57.         while( fs.Read(bytes, 0, byteLength ) != 0 ) 
  58.         { 
  59.           Context.Response.BinaryWrite(bytes);  
  60.         } 
  61.         fs.Close(); 
  62.         //更新数据库浏览次数 
  63.         npdata.SetNumViews(picid, numviews+1); 
  64.       } 
  65.     } 
  66.   } 
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表