2018.10.30更新:https://www.nuget.org/packages/QRCoder/ 大家可以使用这个
/// <summary>
/// 返回二维码对应的图片(base64编码)
/// </summary>
/// <param name="inputText"></param>
/// <returns></returns>
public static string GetQRCodeImageAsBase64(string inputText,int pixelsPerModule = 10)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(inputText, QRCodeGenerator.ECCLevel.Q);
Base64QRCode qrCode = new Base64QRCode(qrCodeData);
string qrCodeImageAsBase64 = qrCode.GetGraphic(10);
return qrCodeImageAsBase64;
}
public static Bitmap GetQRCodeImage(string inputText)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(inputText, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(10);
return qrCodeImage;
}
自己参考QrCode.Net开源实例封装了一个生成二维码的静态方法如下:
/// <summary>
/// 含有QR码的描述类和包装编码和渲染
/// </summary>
public class QRCodeHelper
{
/// <summary>
/// 获取二维码
/// </summary>
/// <param name="strContent">待编码的字符</param>
/// <param name="ms">输出流</param>
///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns>
public static bool GetQRCode(string strContent, MemoryStream ms)
{
ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //误差校正水平
string Content = strContent;//待编码内容
QuietZoneModules QuietZones = QuietZoneModules.Two; //空白区域
int ModuleSize = 12;//大小
var encoder = new QrEncoder(Ecl);
QrCode qr;
if (encoder.TryEncode(Content, out qr))//对内容进行编码,并保存生成的矩阵
{
var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones));
render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);
}
else
{
return false;
}
return true;
}
}
vs2010 framework3.5 引用的组件是QrCode.Net 0.4 Pre-Release\Gma.QrCodeNet.Encoding.Net35
public ActionResult Index()
{
// Render the QR code as an image
using (var ms = new MemoryStream())
{
string stringtest="中国inghttp://www.baidu.com/mvc.test?&";
QRCodeHelper.GetQRCode(stringtest, ms);
Response.ContentType = "image/Png";
Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length);
Response.End();
}
return View();
}
也可以通过js生成相关的qrcode
jQuery.qrcode
http://larsjung.de/qrcode/ jquery的插件,但是压缩后是21k,支持div,images 和canvas,支持生成时嵌入文字和图片
jquery-qrcode
https://github.com/jeromeetienne/jquery-qrcode ,压缩后4k,支持table和canvas