C# 如何将图像转换为存储在项目文件夹中的base64格式?
如何将图像转换为存储在项目文件夹中的base64格式?我试过这个。但它不起作用C# 如何将图像转换为存储在项目文件夹中的base64格式?,c#,asp.net,C#,Asp.net,如何将图像转换为存储在项目文件夹中的base64格式?我试过这个。但它不起作用 public string ImageToBase64( string path) { string path = @"~/img/company.png"; using (System.Drawing.Image image = System.Drawing.Image.FromFile(path)) { using (Mem
public string ImageToBase64( string path)
{
string path = @"~/img/company.png";
using (System.Drawing.Image image = System.Drawing.Image.FromFile(path))
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
}
调用
System.Drawing.Image.FromFile(path)
之前,请解析从URL到绝对路径的路径。您可以通过调用Server.MapPath(path)
来实现这一点
i、 e
或者干脆
string path = @"~/img/company.png";
using (System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(path)))
更详细的解释
- 在处理web上的资源时,我们使用URL李>
- URL
表示从站点的根目录(这是波浪线(~/img/company.png
)所指)导航到~
子文件夹,然后导航到文件img
company.png
类不是为URL构建的,因此不知道如何处理它们。相反,它需要文件系统的路径。它无法理解URL的原因有:System.Drawing.Image
- 它不知道tilde是什么意思
- 它不知道站点的根在哪里
- 即使给定
它也会尝试根据工作目录而不是站点的根目录查找文件。当前工作目录可能是IIS可执行文件的位置(尽管我不确定/最好不要知道,因为工作目录的概念在web环境中没有意义)path=@“img\company.png”
- 它不知道虚拟路径;因此,即使工作目录与站点的根目录相同,并且缺少tilde,
也可能位于磁盘上与站点结构中完全不同的位置;甚至可能映射到某个远程文件服务器上的共享)\img\
- 调用
将此URL解析为非web感知函数可以理解的真实路径Server.MapPath
这里有一个很好的答案,提供了关于
Server.MapPath
的更多细节和示例:试试path=Server.MapPath(path)
。还要注意的是,您当前正在覆盖path参数(我认为这是本文有意考虑的,但在意外情况下会指出)。您会得到什么错误?对于它不起作用是什么意思?你有错误吗?你知道不起作用
就是不起作用,你需要指定三件事来得到答案:你做了什么,你得到了什么,你得到了什么expected@JohnLBevan . 谢谢你,先生。现在它起作用了。
string path = @"~/img/company.png";
using (System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(path)))