如何在 Microsoft bot 框架中仅使用图像的 base64 编码字符串显示图像?

How do i display images in Microsoft bot framework with only the base64 encoded string of the image?

我尝试了下面的代码,这是我在模拟器中得到的输出

message.Attachments.Add(new Attachment() { ContentUrl = $"data:image/jpeg;base64,xxxx" });

当你想显示图片时,你可以使用降价。

var replyMessage = "[ImgName](" + ImagesUrl + ")";
return message.CreateReplyMessage(replyMessage);

Bot Framework Markdown Documentation

================= Base64字符串转图片======================= ===

    public void SaveImage(string base64)
{
    using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(base64)))
    {
        using (Bitmap bm2 = new Bitmap(ms))
        {
            bm2.Save("SavingPath" + "ImageName.jpg");
        }
    }
}

然后就可以使用URL.

数据 uri 图像似乎有最大大小,但是您的初始代码对我来说看起来不错,并且没有抛出明确的内部服务器错误(如果数据 uri 太大就会出现这种情况)。

我实现了类似的东西:

var reply = message.CreateReply("Here's a **datauri image attachment**");
reply.Attachments = new List<Attachment> {
    new Attachment()
    {
        ContentUrl = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAQABADAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACAUH/8QAJhAAAQMDAwQCAwAAAAAAAAAAAQIDBQQGEQcIEgATISIUMRUjUf/EABYBAQEBAAAAAAAAAAAAAAAAAAMBBP/EAB8RAAICAQQDAAAAAAAAAAAAAAECAAMRBBITIiFB8P/aAAwDAQACEQMRAD8AubjdVbtj5cQFi3tX2lS/ka16Rko9pZqHHfklplgKAylJPNR/vEZPWyvTpUN7jMyK3M21fE03ZLuQ1Gmbyc0j1Dudq7o8RztXFzXEGtacZeQhxipKT7D9qcKUOQ+skfRWKrdqxj71HI4erHME97633Fc+pF10c64pIg7ll6CldoEcHEoTVL7fMZ9se2CPOekdkCiSjIYmLvYvMRdLQPXDG3FGSEzK1iKB4rYCnaan7oVwcCQCHVqGTkkeEefGOgbTtjccyW6sM4QAT//Z",
        ContentType = "image/jpg",
        Name = "datauri"
    }
};

这导致模拟器显示此图像(我需要更多代表来嵌入图像..呃..)

更新:~20kb 图像的数据 uri 版本工作正常,但是~140kb 图像的数据 uri 版本在模拟器中失败并出现“500 internalservererror”。猜猜毕竟有大小限制..

因此,您能否验证您使用的 datauri 是有效图像?您能否创建一个带有 img 元素的简单 html 页面,将值粘贴到您的 ContentUrl 中,然后在 html 页面中查看图像?或者甚至只是将其粘贴到浏览器地址栏中。