C# 保存网络图片至本地项目中
2021/7/20 14:06:22
本文主要是介绍C# 保存网络图片至本地项目中,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、获取项目根目录 System.AppDomain.CurrentDomain.BaseDirectory
以下为把图片转成流保存成文件
1 #region 保存web图片到本地 2 /// <summary> 3 /// 保存web图片到本地 4 /// </summary> 5 /// <param name="imgUrl">web图片路径</param> 6 /// <param name="path">保存路径</param> 7 /// <param name="fileName">保存文件名</param> 8 /// <returns></returns> 9 public static string SaveImageFromWeb(string imgUrl, string path, string fileName) 10 { 11 if (path.Equals("")) 12 throw new Exception("未指定保存文件的路径"); 13 string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1); 14 string defaultType = ".jpg"; 15 string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }; 16 string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf(".")); 17 string imgPath = ""; 18 foreach (string it in imgTypes) 19 { 20 if (imgType.ToLower().Equals(it)) 21 break; 22 if (it.Equals(".bmp")) 23 imgType = defaultType; 24 } 25 26 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl); 27 request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)"; 28 request.Timeout = 3000; 29 30 WebResponse response = request.GetResponse(); 31 Stream stream = response.GetResponseStream(); 32 33 if (response.ContentType.ToLower().StartsWith("image/")) 34 { 35 byte[] arrayByte = new byte[1024]; 36 int imgLong = (int)response.ContentLength; 37 int l = 0; 38 39 if (fileName == "") 40 fileName = imgName; 41 42 FileStream fso = new FileStream(path + fileName + imgType, FileMode.Create); 43 while (l < imgLong) 44 { 45 int i = stream.Read(arrayByte, 0, 1024); 46 fso.Write(arrayByte, 0, i); 47 l += i; 48 } 49 50 fso.Close(); 51 stream.Close(); 52 response.Close(); 53 imgPath = fileName + imgType; 54 return imgPath; 55 } 56 else 57 { 58 return ""; 59 } 60 } 61 #endregionView Code
注:以上代码适用于获取网络图片保存时会到参数无效时。
System.Drawing.Image.FromStream(ms) 这里会抛出异常,上网查阅资料说是透明度的问题不兼容,所以可以考虑直接用文件的形式保存下来,然后在获取对应的图片
这篇关于C# 保存网络图片至本地项目中的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用