C# 生成二維碼(帶Logo)
第一種方式
我們需要引用 ThoughtWorks.QRCode.dll 生成帶logo二維碼(framework4.0以上)
下載地址:https://pan.baidu.com/s/1mBjd7PHB-Klybx18Z5Og8A
提取碼: ugwa
/// <summary> /// 創建二維碼 /// </summary> /// <param name="content">內容</param> /// <returns></returns> public static Bitmap CreateQRCode(string content) { try { QRCodeEncoder qrEncoder = new QRCodeEncoder(); //二維碼類型 qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //二維碼尺寸 qrEncoder.QRCodeScale = 4; //二維碼版本 qrEncoder.QRCodeVersion = 7; //二維碼容錯程度 qrEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //字體與背景顏色 qrEncoder.QRCodeBackgroundColor = Color.White; qrEncoder.QRCodeForegroundColor = Color.Black; //UTF-8編碼類型 Bitmap qrcode = qrEncoder.Encode(content, Encoding.UTF8); return qrcode; } catch (Exception) { return null; } }
/// <summary> /// 生成帶logo二維碼 /// </summary> /// <returns></returns> public static Bitmap CreateQRCodeWithLogo(string content, string logopath) { //生成二維碼 Bitmap qrcode = CreateQRCode(content); //生成logo Bitmap logo = new Bitmap(logopath); //合成 ImageUtility util = new ImageUtility(); Bitmap finalImage = util.MergeQrImg(qrcode, logo); return finalImage; }
/// <summary> /// 保存二維碼 /// </summary> /// <param name="QRCode">二維碼圖片</param> /// <param name="SavePath">保存路徑</param> /// <param name="QRCodeName">圖片名稱</param> public static void SaveQRCode(Bitmap QRCode, string SavePath, string QRCodeName) { if (!Directory.Exists(SavePath)) { Directory.CreateDirectory(SavePath); } QRCode.Save(Path.Combine(SavePath, QRCodeName + ".png"), ImageFormat.Png); QRCode.Dispose(); }
第二種方式
我們需要引用 Gma.QrCodeNet.Encoding.Net45.dll (framework4.5以上)支持中文
下載地址:https://pan.baidu.com/s/1TKMwdWHYhTp_fJnTYHKnsQ
提取碼: eqjh
// <summary> /// 生成保存二維碼(framework4.5以上) /// </summary> /// <param name="CodeString"></param> /// <param name="PicName"></param> /// <param name="FilePath"></param> public static void CreateQRCode(string CodeString, string PicName, string FilePath) { QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); QrCode code = new QrCode(); qrEncoder.TryEncode(CodeString, out code); const int modelSizeInPixels = 4; GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(modelSizeInPixels, QuietZoneModules.Two) , Brushes.Black, Brushes.White); if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } string filename = FilePath + "\\" + PicName + ".png"; using (FileStream stream = new FileStream(filename, FileMode.Create)) { render.WriteToStream(code.Matrix, ImageFormat.Png, stream); } }
