我使用转换方法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/ using类型没有成功地使用这种方法进行渲染。我已经比较了这些图像的属性和那些没有问题的属性,并且我找不到任何显著的差异来解释这个问题。
我还注意到,这个问题在JPG文件中并不普遍,如果我只为png文件指定一个直接路径作为源文件,该文件就会在图像标记中适当呈现。
我似乎有一个技巧,遇到这样的怪事,但我希望有人可以提供一些投入,为什么这可能会发生。
我认为,只要字节数组的大小在合理的范围内,图像标记应该能够处理Convert.ToBase64String()方法提供的任何字符串。而且这些PNG文件还是比较小的。尺寸约49 of,尺寸232x232。
发布于 2014-03-04 14:50:07
你是怎么得到图像字符串的?
这听起来像是一个GET大小限制问题,服务器在其中默默地截断响应。
为了进一步解决这个问题..。我将查看通过ajax获得的base64字符串,并将其与方法中的实际图像toBase64进行比较。
https://stackoverflow.com/questions/22174441
复制相似问题