using QRCoder; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ZXing; namespace NCC.Code.QrCode { /// /// 二维码类 /// public static class QrCodeCommon { /// /// 生成二维码 /// /// /// 像素大小 /// public static Bitmap GetQRCode(string plainText, int pixel) { //var generator = new QRCodeGenerator(); //var qrCodeData = generator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q); //var qrCode = new QRCoder.QRCode(qrCodeData); //var bitmap = qrCode.GetGraphic(pixel); //return bitmap; return null; } /// /// 生成二维码 /// /// 二维码内容 /// public static Bitmap CreateQRCodeImage(string content) { //QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator(); //QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q); //QRCode qrcode = new QRCode(qrCodeData); //Bitmap qrCodeImage = qrcode.GetGraphic(20, Color.Black, Color.White, null, 15, 1, false); //return qrCodeImage; return null; } /// /// 读取二维码(ThoughtWorks) /// /// /// public static string ReadQRCodeImage(Bitmap map) { try { QRCodeDecoder qrDecoder = new QRCodeDecoder(); string content = qrDecoder.decode(new QRCodeBitmapImage(map), Encoding.UTF8); return content; } catch (Exception e) { return ""; } } /// /// 添加二维码并保存到文件夹 /// /// 二维码内容 /// 子文件夹 /// public static string AddQRCodeSaveToFile(string content, string dir) { string fileName = Guid.NewGuid().ToString() + ".jpg"; string filePath = AppDomain.CurrentDomain.BaseDirectory.ToString() + @"resource\image\qr\" + dir; try { Bitmap qrCodeImage = CreateQRCodeImage(content); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } qrCodeImage.Save(filePath + @"\" + fileName, System.Drawing.Imaging.ImageFormat.Jpeg); qrCodeImage.Dispose(); return "/resource/image/qr/" + dir + "/" + fileName; } catch (Exception e) { return ""; } } /// /// 生成二维码 /// /// 内容 /// 像素大小 默认5 可自行调整 /// public static Bitmap ToQrCode(this string plainText, int pixel = 5) { return GetQRCode(plainText, pixel); } /// /// 生成二维码 Base64 /// /// 内容 /// 像素大小 默认5 可自行调整 /// 包含data:image... 前缀 默认false /// public static string ToQrCodeBase64(this string plainText, int pixel = 5, bool hasprev = false) { string base64 = ""; if (hasprev) { base64 = "data:image/png;base64,"; } base64 += FileHelper.BitmapToBase64(GetQRCode(plainText, pixel)); return base64; } } }