繁体   English   中英

ToBase64String()方法应该适用于所有图像类型吗?

[英]Should ToBase64String() method work with all image types?

我使用转换方法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标签中适当地呈现。

我似乎有遇到这种奇怪情况的诀窍,但我希望有人可以就为什么会发生这种情况提供一些意见。

我认为,只要字节数组的大小在合理范围内,image标记就应该能够处理Convert.ToBase64String()方法提供的任何字符串。 而且这些PNG文件相对较小。 大小约为49KB,尺寸为232 x 232。

您如何获得图像字符串?

这听起来像是GET大小限制问题,服务器在其中默默地截断响应。

为了进一步解决此问题...我将查看您通过ajax获得的base64字符串,并将其与方法中的实际图像toBase64进行比较。

暂无
暂无

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

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