ASP.NET实现根据URL生成网页缩略图的方法
基本原理
根据URL生成网页缩略图的基本原理是:通过解析URL获取网页的HTML内容,然后利用HTML解析器将HTML内容转换为DOM树,再根据DOM树生成缩略图,具体步骤如下:
实现步骤
以下是在ASP.NET中实现根据URL生成网页缩略图的步骤:
1 准备工作
2 获取网页HTML内容
HttpClient httpClient = new HttpClient();var response = await httpClient.GetAsync("http://www.example.com");var htmlContent = await response.Content.ReadAsStringAsync();
3 解析HTML内容
HtmlDocument htmlDocument = new HtmlDocument();htmlDocument.LoadHtml(htmlContent);HtmlNode imageNode = htmlDocument.DocumentNode.SelectSingleNode("//img");var width = imageNode.Attributes["width"].Value;var height = imageNode.Attributes["height"].Value;
4 生成缩略图
using (var stream = new MemoryStream()){using (var image = new Bitmap(width, height)){using (Graphics graphics = Graphics.FromImage(image)){graphics.CopyFromScreen(new Rectangle(0, 0, int.Parse(width), int.Parse(height)), new Point(0, 0), new Size(int.Parse(width), int.Parse(height)));}image.Save(stream, ImageFormat.Jpeg);}Image thumbnail = Image.FromStream(stream);imageControl.Image = thumbnail;}
代码示例
以下是一个完整的代码示例:
using System;using System.Net.Http;using System.Threading.Tasks;using HtmlAgilityPack;using System.Drawing;using System.Drawing.Imaging;public partial class WebForm1 : System.Web.UI.Page{PROtected void Page_Load(object sender, EventArgs e){GenerateThumbnailAsync("http://www.example.com").Wait();}private async Task GenerateThumbnailAsync(string url){HttpClient httpClient = new HttpClient();var response = await httpClient.GetAsync(url);var htmlContent = await response.Content.ReadAsStringAsync();HtmlDocument htmlDocument = new HtmlDocument();htmlDocument.LoadHtml(htmlContent);HtmlNode imageNode = htmlDocument.DocumentNode.SelectSingleNode("//img");var width = imageNode.Attributes["width"].Value;var height = imageNode.Attributes["height"].Value;using (var stream = new MemoryStream()){using (var image = new Bitmap(int.Parse(width), int.Parse(height))){using (Graphics graphics = Graphics.FromImage(image)){graphics.CopyFromScreen(new Rectangle(0, 0, int.Parse(width), int.Parse(height)), new Point(0, 0), new Size(int.Parse(width), int.Parse(height)));}image.Save(stream, ImageFormat.Jpeg);}Image thumbnail = Image.FromStream(stream);imageControl.Image = thumbnail;}}}
问题1:如何优化生成缩略图的过程?
解答: 优化生成缩略图的过程可以从以下几个方面入手:
问题2:如何处理跨域请求生成缩略图的问题?
解答: 处理跨域请求生成缩略图的问题可以通过以下几种方法:
asp.net读取数据库图片的路径 显示在页面上 怎么做
中规中矩的操作即可;
用对象读取图片路径,传递给你的页面,至于如何生产缩略图,那方法很多,自行解决。
说句题外话,看了你的代码,我个人并不推荐这种低级的操作方式,代码冗长,而且极易被恶意攻击。
如果有条件的开发人员,会选择OO的LINQ,而不是去自己拼接一些老式的API。
无论是成本还是效率亦或是后期的维护扩展,LINQ都有绝对的优势。
如何有代码制作网页
制作网页时,即使你是所见即所得的制作方式,代码区域也会自动生成一些简单的代码的,当然这些只是静态代码,如果需要调用一些数据,那就要学会,等等一些其他的代码,例如,VBScriptC++等等.丰富你网页的功能.代码无非是 字母数字加符号看你要怎么应用了
QQ医生全面诊断中各诊断项有哪些?
■ 进程项进程项是指当前系统中正在运行的程序。 ■ 启动项启动项是在计算机操作系统启动时自动运行的程序和服务,“全面诊断”检查启动项的范围要比“管理启动项”那里的启动项多一点。 ■ 浏览器辅助对象BHO(Browser Helper Object,浏览器辅助对象)一种随因特网浏览器(如IE)每次启动而自动执行的小程序。 通常的BHO会帮助用户更方便地浏览因特网或调用上网辅助功能,也有一部分BHO会被广告软件或间谍软件利用。 ■ 第三方IE插件第三方插件是指会随着IE浏览器的启动自动执行的程序。 有可能会被广告软件或间谍软件利用。 ■ IE右键菜单当我们安装了一些和网络有关的软件后,可能会在IE的右键菜单增加很多快捷方式,如果这些快捷方式过多,就会影响系统的性能,给我们的使用带来不便。 ■ IE工具栏有些网络软件会在IE工具栏增加一些图标,如果这些图标过多,就会影响浏览器的整洁,影响系统的性能,给我们的使用带来不便。 ■ ActiveX对象ActiveX对象是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。 ActiveX对象允许网页通过脚本和控件交互产生更加丰富的效果,同时也带来一些安全性的问题。 ■ 默认浏览器默认浏览器是指您打开一个URL链接、或者打开一个网页文件时,默认使用的浏览器。 ■ 文件关联当您打开某一种类型的文件时,系统会默认启动的一个可以打开它的程序。 这种依存关系就叫文件关联。 比如您双击一个txt文件,就会默认使用记事本软件打开这个文件。 ■ 系统服务系统服务是一种应用程序类型,随系统启动,并在系统后台运行,以便支持其他程序,尤其是低层(接近硬件)程序。 关掉一些不必要的系统服务可以提高系统运行的效率。 ■ HostsHosts文件是一个文本文件,包含IP地址和Host name(主机名)的映射关系。 我们可以利用Hosts把一些恶意网站的域名映射到错误的IP或自己计算机的IP,以达到屏蔽的目的。 但是有些病毒木马也会将一些我们经常访问的网站映射到恶意网站的IP,给我们的系统安全带来很大的危害。 ■ 协议相关当您打开某些网页或文件时,系统会根据默认协议启动不同的程序。 有些恶意软件通过将您的电脑的默认协议替换为自己的协议,以达到监控数据的目的。 ■ 已知DLL当运行某程序时,系统会根据注册表的这一键值决定优先启用哪个DLL文件。 有些木马会修改或增加这个键值,以达到启动恶意程序的目的。 ■ 打印监控打印监控是系统为监控打印机运行状态启动的程序。 ■ 随系统加载的其它模块指会随系统启动的一些其它模块,包括安全模式下启动的程序,URL执行挂钩等。 ■ 调试相关项当运行某程序加载失败或崩溃时,系统会根据这一键值启动相应的调试程序。 一般默认为。 ■ 驱动程序为保证电脑一些硬件设备的正常使用,系统会启动一系列的驱动程序。 有些病毒木马也会伪装成驱动程序随系统启动,以达到其运行的目的。














发表评论