Asp.net mvc 2 如何在ASP.net MVC视图中显示图像属性
我想将我的卡片代码转换为二维图像,所以我在我的项目中添加了一个参考。然后我在助手类中创建了一个方法:Asp.net mvc 2 如何在ASP.net MVC视图中显示图像属性,asp.net-mvc-2,qr-code,Asp.net Mvc 2,Qr Code,我想将我的卡片代码转换为二维图像,所以我在我的项目中添加了一个参考。然后我在助手类中创建了一个方法: public static Image GenerateQRCode(String code) { QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); QrCode qrCode = new QrCode(); qrEncoder.TryEncode(code, out qrCode); Renderer re
public static Image GenerateQRCode(String code)
{
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
QrCode qrCode = new QrCode();
qrEncoder.TryEncode(code, out qrCode);
Renderer renderer = new Renderer(5, Brushes.Black, Brushes.White);
MemoryStream ms = new MemoryStream();
renderer.WriteToStream(qrCode.Matrix, ms, System.Drawing.Imaging.ImageFormat.Png);
return System.Drawing.Image.FromStream(ms);
}
然后在我看来,我调用这个函数:
<%
System.Drawing.Image image = ICEWeb.HelperClasses.HelperClass.GenerateQRCode("test");
%>
但是它只显示System.Drawing.Bitmap
,有人知道如何显示从我的函数GenerateQRCode()
返回的System.Drawing.Image吗
Thna通过编写自定义操作结果来轻松完成。您当前拥有的
GenerateQRCode
方法可能会被遗留在旧应用程序中
public class QRCodeResult : ActionResult
{
public QRCodeResult(string code)
{
Code = code;
}
public string Code { get; private set; }
public override void ExecuteResult(ControllerContext context)
{
var response = context.HttpContext.Response;
response.ContentType = "image/png";
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
QrCode qrCode = new QrCode();
qrEncoder.TryEncode(Code, out qrCode);
Renderer renderer = new Renderer(5, Brushes.Black, Brushes.White);
renderer.WriteToStream(qrCode.Matrix, response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
}
}
然后是控制器操作:
public ActionResult QRCode(string code)
{
return new QRCodeResult(code);
}
最后,在要显示二维码的某些视图中,使用“alt=”“/>
<img src="<%: Url.Action("QRCode", new { code = "test" }) %>" alt="" />