C#封装:从网络下载并保存多种图片类型到本地
在C#编程中,有一个实用的方法`SaveImageFromWeb`,用于将网络上的图片下载并保存到本地计算机。这个方法主要接受三个参数:`imageUrl`(图片的URL地址)、`path`(目标文件夹路径)和`fileName`(本地保存的文件名)。方法的目的是解决实际开发中常见的图片下载需求,支持`.jpg`, `.jpeg`, `.png`, `.gif`, 和 `.bmp` 这五种常见的图片格式。 首先,方法检查`path`是否为空,如果不为空则继续执行。接着,通过`imageUrl`获取图片的实际文件名(去除URL中的路径部分),并通过遍历`imgTypes`数组来确定图片的默认类型。如果图片扩展名在提供的类型列表中,就使用该扩展名;如果扩展名不明确或者不是列表中的类型,设置为`.jpg`作为默认值。 创建一个`HttpWebRequest`对象,设置了请求头以模仿浏览器用户代理,防止服务器识别出是爬虫或机器人。同时,设置请求超时时间为3秒,以避免长时间等待。然后,通过`WebRequest.Create(imgUrl)`创建请求,并用`response = request.GetResponse()`发送请求获取响应。 如果服务器返回的Content-Type头信息以`image/`开头,说明这是一个有效的图像,程序将读取响应的`ResponseStream`,将其内容转换为字节数组。接下来,将这些字节写入到指定的本地文件中。这里省略了具体的写入代码,但通常会使用`FileStream`或`BinaryWriter`来实现字节流到文件的转换。 `SaveImageFromWeb`方法封装了这个过程,简化了开发者处理网络图片下载和本地存储的操作。使用这个方法时,只需要传入正确的URL、保存路径和文件名,即可完成图片的下载保存,提高了代码的可重用性和效率。 总结来说,C#的`SaveImageFromWeb`函数提供了一种便捷的途径,帮助开发者高效地从网络上获取和保存图片,适用于网页抓取、图片备份、动态网站开发等场景,具有很高的实用性。
/// 保存web图片到本地
/// </summary>
/// <param name="imgUrl">web图片路径</param>
/// <param name="path">保存路径</param>
/// <param name="fileName">保存文件名</param>
/// <returns></returns>
public static string SaveImageFromWeb(string imgUrl, string path, string fileName)
{
if (path.Equals(""))
throw new Exception("未指定保存文件的路径");
string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);
string defaultType = ".jpg";
string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
string imgPath = "";
foreach (string it in imgTypes)
{
if (imgType.ToLower().Equals(it))
break;
if (it.Equals(".bmp"))
imgType = defaultType;
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
request.Timeout = 3000;
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 7
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- OptiX传输试题与SDH基础知识
- C++Builder函数详解与应用
- Linux shell (bash) 文件与字符串比较运算符详解
- Adam Gawne-Cain解读英文版WKT格式与常见投影标准
- dos命令详解:基础操作与网络测试必备
- Windows 蓝屏代码解析与处理指南
- PSoC CY8C24533在电动自行车控制器设计中的应用
- PHP整合FCKeditor网页编辑器教程
- Java Swing计算器源码示例:初学者入门教程
- Eclipse平台上的可视化开发:使用VEP与SWT
- 软件工程CASE工具实践指南
- AIX LVM详解:网络存储架构与管理
- 递归算法解析:文件系统、XML与树图
- 使用Struts2与MySQL构建Web登录验证教程
- PHP5 CLI模式:用PHP编写Shell脚本教程
- MyBatis与Spring完美整合:1.0.0-RC3详解