Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将图像转换为存储在项目文件夹中的base64格式?_C#_Asp.net - Fatal编程技术网

C# 如何将图像转换为存储在项目文件夹中的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

如何将图像转换为存储在项目文件夹中的base64格式?我试过这个。但它不起作用

     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
  • System.Drawing.Image
    类不是为URL构建的,因此不知道如何处理它们。相反,它需要文件系统的路径。它无法理解URL的原因有:
    • 它不知道tilde是什么意思
    • 它不知道站点的根在哪里
    • 即使给定
      path=@“img\company.png”
      它也会尝试根据工作目录而不是站点的根目录查找文件。当前工作目录可能是IIS可执行文件的位置(尽管我不确定/最好不要知道,因为工作目录的概念在web环境中没有意义)
    • 它不知道虚拟路径;因此,即使工作目录与站点的根目录相同,并且缺少tilde,
      \img\
      也可能位于磁盘上与站点结构中完全不同的位置;甚至可能映射到某个远程文件服务器上的共享)
  • 调用
    Server.MapPath
    将此URL解析为非web感知函数可以理解的真实路径

这里有一个很好的答案,提供了关于
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)))