[英]C# Bitmap to Html img using ajax doesn't work
This is my C# code to make Bitmap 这是我制作位图的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);
}
});
});
This is my Javascript code using ajax to get Bitmap to change img src. 这是我的Javascript代码,使用Ajax获取Bitmap来更改img src。 But It's doesn't work.I alway get error message. 但这不起作用,我总是收到错误消息。 Could any one can help me to fix this issue. 任何人都可以帮助我解决此问题。 I have used change minitype to "data:image/bmp;base64" or "data:image/gif," then I always get error. 我曾经使用minitype更改为“ data:image / bmp; base64”或“ data:image / gif”,然后总是出现错误。
You are serializing Bitmap to response stream. 您正在将位图序列化为响应流。 Your JS will receive a .net serialized object of type System.Byte[]
and not a Base64 encoded string. 您的JS会收到一个System.Byte[]
类型的.net序列化对象,而不是Base64编码的字符串。
MemoryStream.ToArray()
通过MemoryStream.ToArray()
将位图保存到字节数组 Convert.ToBase64String(bitmapBytes)
使用Convert.ToBase64String(bitmapBytes)
将此数组转换为Base64字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.