为了账号安全,请及时绑定邮箱和手机立即绑定

C# Bitmap to Html img 使用 ajax 不起作用

C# Bitmap to Html img 使用 ajax 不起作用

C#
慕工程0101907 2021-06-18 18:14:55
这是我制作位图的 C# 代码   public void VerificationCode(int captchaWidth = 75, int captchaHeight = 25)    {        var colorList = new List<Color> { Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Blue, Color.Brown };        Response.ContentType = "image/gif";        Response.Clear();        Response.BufferOutput = true;        var randString = new Random((int)DateTime.Now.Ticks).Next(99999).ToString("00000");             Session["VerificationCode"] = randString;        var bitmap = new Bitmap(captchaWidth, captchaHeight);                    var graph = Graphics.FromImage(bitmap);                    var font = new Font("Arial", 16, FontStyle.Italic);        var fontColor = Color.FromArgb(153, 153, 153);                    graph.Clear(Color.White);                    graph.DrawString(randString, font, new SolidBrush(fontColor), 0, 0);        var random = new Random((int)DateTime.Now.Ticks);        var randomColor = new Random((int)DateTime.Now.Ticks);        for (var i = 0; i < 100; i++)        {            var c = randomColor.Next(0, colorList.Count);            var randPixelX = random.Next(0, captchaWidth);            var randPixelY = random.Next(0, captchaHeight);            bitmap.SetPixel(randPixelX, randPixelY, colorList[c]);        }                    bitmap.Save(Response.OutputStream, ImageFormat.Gif);    } $('#ChangeCaptcha').on('click', function () {        $.ajax({            url: '@Url.Action("VerificationCode", "Base")',            type: 'Get',            async: false,            success: function (data) {                console.log(data);                $('#CaptchaImage').attr('src', "data:image/gif;base64," + data);            }        });    });这是我使用 ajax 获取位图以更改 img src 的 Javascript 代码。但它不起作用。我总是收到错误消息。任何人都可以帮助我解决这个问题。我已经将 minitype 更改为“data:image/bmp;base64”或“data:image/gif”,然后总是出错。
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您正在Bitmap序列化为响应流。您的 JS 将收到一个 .net 序列化类型的对象,System.Byte[]而不是 Base64 编码的字符串。

  1. 通过将位图保存到字节数组 MemoryStream.ToArray()

  2. 将此数组转换为 Base64 字符串 Convert.ToBase64String(bitmapBytes)

  3. 将结果字符串发送到 JS


查看完整回答
反对 回复 2021-06-27
  • 1 回答
  • 0 关注
  • 241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信