对于一次性使用的二维码,没有必要把二维码保存起来,直接把二维码流返回。
[HttpGet] public ActionResult GetQrCode(string url) { using (MemoryStream ms = new MemoryStream()) { Bitmap bitmap = QRCoderHelper.GetQRCode(url); bitmap.Save(ms, ImageFormat.Jpeg); return File(ms.ToArray(), "image/png"); } }
这边使用的Nuget包 是 ThoughtWorks.QRCode.Core
public static Bitmap GetQRCode(string url) { QRCodeEncoder endocder = new QRCodeEncoder(); //二维码背景颜色 endocder.QRCodeBackgroundColor = System.Drawing.Color.White; //二维码编码方式 endocder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //每个小方格的宽度 endocder.QRCodeScale = 5; //二维码版本号 endocder.QRCodeVersion = 0; //纠错等级 endocder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //将json川做成二维码 Bitmap bitmap = endocder.Encode(url, System.Text.Encoding.UTF8); return bitmap; }
部署到linux有个坑是: 会报错 Unable to load DLL 'gdiplus'
需要用root账号 执行 yum install libgdiplus-devel