输入不是有效的Base-64字符串,因为它包含非基数64字符,"

Zad*_*xmi 0 c# image

C#代码:

 string base64string = Textbox1.Text;
                string converted = base64string.Replace('-', '+');
                converted = converted.Replace('_', '/');
                try
                {
                    //  Convert base64string to bytes array
                    Byte[] bytes = Convert.FromBase64String(converted);
                    gif = iTextSharp.text.Image.GetInstance(bytes);

                }
Run Code Online (Sandbox Code Playgroud)

Textbox1.Text包含

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUYAAADICAYAAAAkwztuAAAgAElEQVR4Xu3db6wdVd0v8KX2UGlLRfPE8JgIWiUc3yikvqt/ohi1L1Q04u2VCiVq0UpjTIAcCUewxj9YOAakgR7808TEe28rFpOSFKI3xPhGQk1jWyOJN+gLlQYLCtQoT4V7Zj+Z7Zw5s//v2XvNzKdJE+nZs+a3Pr91tvt8z5qZl7y49Cf4Q4AAAQIECBAgQIAAAQIECBAgQIAAgQYJvEQw2qBumyoBAgQIECBAgAABAgQIECBAgAABAi0BwaiFQIAAAQIECBAgQIAAAQIECBAgQIBA4wQEo41ruQkTIECAAAECBAgQIECAAAECBAgQICAYtQYIECBAgAABAgQIECBAgAABAgQIEGicgGC0cS03YQIECBAgQIAAAQIECBAgQIAAAQIEBKPWAAECBAgQIECAAA.... 
Run Code Online (Sandbox Code Playgroud)

它是一个正确的格式,但我仍然得到错误.

Tho*_*mar 5

你需要剥离开始data:image/png;base64,.字符串的其余部分看起来像有效的BASE64,但是包括逗号在内的所有内容都不属于那里.


Kja*_*tan 5

你需要跳过这个:data:image/png;base64,,所以试试类似:

 string base64string = Textbox1.Text.Substring(22);
Run Code Online (Sandbox Code Playgroud)

这将获取字符串中前22个字符后的所有内容.请注意,在执行此操作之前,您可能需要验证文本框中是否有超过22个字符,只是为了确保它不为空.

编辑:也许更好的方法是:

var text = Textbox1.Text;
var metadataStart = text.IndexOf("data:image/png;base64,");
if(start != -1)
{
    // Remove the metadata if found
    text = text.Remove(metadataStart, metadataStart + 22);
}
Run Code Online (Sandbox Code Playgroud)

在此之后,你可以继续转换text.