重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了怎么在ASP.NET中根据URL生成网页缩略图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联建站专注于碧江企业网站建设,成都响应式网站建设公司,商城建设。碧江网站建设公司,为碧江等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务起始页:Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CaptureToImage._Default" %>Snap
调用页:Snap.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Snap.aspx.cs" Inherits="CaptureToImage.Snap" AspCompat="true" %>无标题页
PS:红色字体部分是为解决错误增加的代码,强制程序在单线程环境下运行!
调用页:Snap.aspx.cs
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing.Imaging; namespace CaptureToImage { public partial class Snap : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url = string.Empty; url = Request.QueryString[0]; try { GetImage thumb = new GetImage(url, 1024, 768, 800, 600); System.Drawing.Bitmap x = thumb.GetBitmap(); x.Save(Response.OutputStream, ImageFormat.Jpeg); Response.ContentType = "image/jpeg"; } catch (Exception ex) { Response.Write(ex.Message); } } } }
类文件:GetImage.cs
using System; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; using System.Web.UI; namespace CaptureToImage { public class GetImage { int S_Height; int S_Width; int F_Height; int F_Width; string MyURL; public int ScreenHeight { get { return S_Height; } set { S_Height = value; } } public int ScreenWidth { get { return S_Width; } set { S_Width = value; } } public int ImageHeight { get { return F_Height; } set { F_Height = value; } } public int ImageWidth { get { return F_Width; } set { F_Width = value; } } public string WebSite { get { return MyURL; } set { MyURL = value; } } public GetImage(string WebSite, int ScreenWidth, int ScreenHeight, int ImageWidth, int ImageHeight) { this.WebSite = WebSite; this.ScreenHeight = ScreenHeight; this.ScreenWidth = ScreenWidth; this.ImageHeight = ImageHeight; this.ImageWidth = ImageWidth; } [STAThread] public Bitmap GetBitmap() { WebPageBitmap Shot = new WebPageBitmap(this.WebSite, this.ScreenWidth, this.ScreenHeight); Shot.GetIt(); Bitmap Pic = Shot.DrawBitmap(this.ImageHeight, this.ImageWidth); return Pic; } } public class WebPageBitmap { WebBrowser MyBrowser; string URL; int Height; int Width; public WebPageBitmap(string url, int width, int height) { this.URL = url; this.Width = width; this.Height = height; MyBrowser = new WebBrowser(); MyBrowser.ScrollBarsEnabled = false; MyBrowser.Size = new Size(this.Width, this.Height); } public void GetIt() { NavigateUrl(this.URL); while (MyBrowser.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } } public delegate void DelUserHandler(string url); public void NavigateUrl(string url) { try { if (this.MyBrowser.InvokeRequired) { DelUserHandler handler = new DelUserHandler(NavigateUrl); MyBrowser.Invoke(handler, url); } else { this.MyBrowser.Navigate(url); } } catch (Exception ex) { throw new Exception("NavigateUrl()" + ex.Message); } } public Bitmap DrawBitmap(int theight, int twidth) { Bitmap myBitmap = new Bitmap(this.Width, this.Height); Rectangle DrawRect = new Rectangle(0, 0, this.Width, this.Height); MyBrowser.DrawToBitmap(myBitmap, DrawRect); System.Drawing.Image imgOutput = myBitmap; System.Drawing.Bitmap oThumbNail = new Bitmap(twidth, theight, imgOutput.PixelFormat); Graphics g = Graphics.FromImage(oThumbNail); g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; Rectangle oRectangle = new Rectangle(0, 0, twidth, theight); g.DrawImage(imgOutput, oRectangle); try { return oThumbNail; } catch { return null; } finally { imgOutput.Dispose(); imgOutput = null; MyBrowser.Dispose(); MyBrowser = null; } } } }
上述内容就是怎么在ASP.NET中根据URL生成网页缩略图,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。