到目前为止,我一直在使用转换方法ToBase64String一段时间没有任何问题。我基本上采用上传的图像,将其转换为字节数组,然后使用ToBase64String()方法结合识别的内容MIME类型,将其分配给我页面上的图像标记源。这是我的方法:
protected string RenderImage(byte[] image, string contentType)
{
try
{
if (profilePhoto != null)
{
byte[] byteArray = image;
string imageBase64 = Convert.ToBase64String(byteArray);
string imageSrc = string.Format("data:"+ contentType +";base64,{0}", imageBase64);
return imageSrc;
}
}
catch (Exception ex)
{
// Catch Exception
}
return null;
}
我在MVC框架中工作,所以我在一个成功的ajax函数调用中将返回的值指定为我的图像标记的源。一段代码:
success: function (result) {
var newImg = document.getElementById("updatedImage");
newImg.src = result;
}
这一直运行良好,但最近我注意到image / png和image / x-png MIME类型尚未使用此方法成功呈现。我已经将这些图像的属性与那些没有问题的属性进行了比较,我找不到可以解释问题的任何重大差异。
我还注意到JPG文件并不普遍存在问题,如果我只是将png文件的直接路径指定为源文件,则文件会在图像标记中正确呈现。
我似乎有一种闯入像这样的古怪的诀窍,但希望有人能够提供一些输入,说明为什么会发生这种情况。
我认为只要字节数组的大小在合理的限制范围内,image标签就应该能够处理Convert.ToBase64String()方法提供的任何字符串。而且这些PNG文件无论如何都相对较小。尺寸约为49KB,尺寸为232 x 232.
答案 0 :(得分:1)
你是如何获得图像字符串的?
这听起来像是一个GET大小限制问题,服务器会以静默方式截断响应。
要进一步排除故障...我会查看你通过ajax获得的base64字符串,然后将其与你方法中的实际图像toBase64进行比较。