简体   繁体   English

将base64字符串转换为图像时出错(内部描述)

[英]Error in converting base64 string to image (description inside)

I've a task to convert a base64 string to image in asp.net c#, I'm using the following code, 我有一个任务将asp.net c#中的base64字符串转换为图像,我正在使用以下代码,

private static bool SaveImage(string path, string link, string name)
{
    bool result = true;
    if (link.StartsWith("data:image/jpeg;base64,"))
    {
        try
        {
            string intImg = path + "/" + name + ".jpg";
            System.Drawing.Image bmpFromString = Base64StringToBitmap(link.Replace("data:image/jpeg;base64,",""));
            bmpFromString.Save(intImg, ImageFormat.Jpeg);
            result = true;
        }
        catch (Exception)
        {
            result = false;
        }
    }
    return result;
}

public static System.Drawing.Image Base64StringToBitmap(string base64String)
{
    System.Drawing.Image bmpReturn = null;
    //string converted = base64String.Replace('-', '+');
    //converted = converted.Replace('_', '/');
    byte[] byteBuffer = Convert.FromBase64String(base64String);
    using (MemoryStream memoryStream = new MemoryStream(byteBuffer))
    {
        //finalImage = System.Drawing.Image.FromStream(ms);
        memoryStream.Position = 0;
        bmpReturn = System.Drawing.Image.FromStream(memoryStream);
        memoryStream.Close();
        byteBuffer = null;
    }
    return bmpReturn;
}

this is the base64 string 这是base64字符串

data:image/jpeg;base64,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

The error message is, 错误消息是,

Error Message The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. "

I can't understand what is wrong with this method, would somebody correct me if i'm wrong. 我不明白这种方法有什么问题,如果我做错了,有人会纠正我。

The base64 string you have is not the correct length. 您拥有的base64字符串长度不正确。 Base64 strings should be in blocks of four characters, but you have 4657 characters, or 1164.25 blocks. Base64字符串应以四个字符为块,但是您有4657个字符或1164.25个块。

Conclusion: You've mistakenly doubled the last 8 in your string. 结论:您错误地将字符串中的最后8加倍。 Removing this, you get an image of three people on a yellow background, with a small gray border on the bottom. 删除此图像,您会在黄色背景上得到三个人的图像,底部有一个小的灰色边框。

您可以使用:

 user.Image.Replace(@"data:image/jpeg;base64,", "");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM