0

我正在尝试将图像转换为 base64 字符串,以便可以保存在数据库的列中。现在我看到了这个方法

public string ImageToBase64(Image image,System.Drawing.Imaging.ImageFormat format)
{
    using (MemoryStream ms = new MemoryStream())
    {
        // Convert Image to byte[]
        image.Save(ms, format);
        byte[] imageBytes = ms.ToArray();

        // Convert byte[] to Base64 String
        string base64String = Convert.ToBase64String(imageBytes);
        return base64String;
    }
}

它在 ASP.NET 中给我一个错误,说它不包含 Save 的定义,询问我是否缺少 Assembly 引用。当我像这样在主方法中调用它时

string base64ImageString = ImageToBase64(img, System.Drawing.Imaging.ImageFormat.Jpeg);

其中主要代码现在看起来像这样:

        sigObj.SetImageFileFormat(0);
        sigObj.SetImageXSize(500);
        sigObj.SetImageYSize(150);
        sigObj.SetImagePenWidth(8);
        sigObj.SetJustifyX(5);
        sigObj.SetJustifyY(5);
        sigObj.SetJustifyMode(5);
        System.Drawing.Image img = sigObj.GetSigImage();
        base64ImageString = ImageToBase64(img, System.Drawing.Imaging.ImageFormat.Jpeg);

它给了我另一个有趣的错误,看起来像这样

Cannot convert from System.Drawing.Image to System.Web.UI.Web.Controls.Image

请问我到底做错了什么。我在 ASP.NET 网络表单上执行此操作

4

2 回答 2

0

您的方法声明与 System.Drawing.Image 和 System.Web.UI.Controls 发生冲突。像这样使用它

public string ImageToBase64(System.Drawing.Image image,System.Drawing.Imaging.ImageFormat format)
于 2019-01-18T10:26:00.400 回答
0

最后一个错误告诉您确切的问题是什么。

在代码文件中,您引用了System.Web.UI.Web.Controls.Image,因此在方法签名中,您的引用Image image实际上是指该包。

您可以通过将鼠标悬停在参考上进行测试,您应该会看到如上所示的完整路径。

您实际需要的参考(并且包含Save()您尝试使用的方法是System.Drawing.Image.

于 2019-01-18T10:48:39.957 回答