这是我制作位图的 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 编码的字符串。
通过将位图保存到字节数组
MemoryStream.ToArray()
将此数组转换为 Base64 字符串
Convert.ToBase64String(bitmapBytes)
将结果字符串发送到 JS
- 1 回答
- 0 关注
- 241 浏览
添加回答
举报
0/150
提交
取消