关于QRCode生成二维码的代码

/// <summary>  /// 创建二维码  /// </summary>  /// <param name="QRString">二维码字符串</param>  /// <param name="QRCodeEncodeMode">二维码编码(Byte、AlphaNumeric、Numeric)</param>  /// <param name="QRCodeScale">二维码尺寸(Version为0时,1:26x26,每加1宽和高各加25</param>  /// <param name="QRCodeVersion">二维码密集度0-40</param>  /// <param name="QRCodeErrorCorrect">二维码纠错能力(L:7% M:15% Q:25% H:30%)</param>  /// <param name="filePath">保存路径</param>  /// <param name="hasLogo">是否有logo(logo尺寸50x50,QRCodeScale>=5,QRCodeErrorCorrect为H级)</param>  /// <param name="logoFilePath">logo路径</param>  /// <returns></returns>
public static bool CreateQRCode(string QRString, string QRCodeEncodeMode, short QRCodeScale, int QRCodeVersion, string QRCodeErrorCorrect, string filePath, bool hasLogo, string logoFilePath,bool hasBack, string backFilePath,string backName, string fileName){bool result = true;QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();switch (QRCodeEncodeMode){case "Byte":qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;break;case "AlphaNumeric":qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;break;case "Numeric":qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;break;default:qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;break;}qrCodeEncoder.QRCodeScale = QRCodeScale;qrCodeEncoder.QRCodeVersion = QRCodeVersion;switch (QRCodeErrorCorrect){case "L":qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;break;case "M":qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;break;case "Q":qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;break;case "H":qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;break;default:qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;break;}try{if (hasBack){//抓取背景图片复制到新文件夹并命名File.Copy(backFilePath, filePath + fileName);//生成二维码图片Image image_b = qrCodeEncoder.Encode(QRString, System.Text.Encoding.UTF8);System.IO.FileStream fs_b = new System.IO.FileStream(filePath + backName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);//存储二维码图片image_b.Save(fs_b, System.Drawing.Imaging.ImageFormat.Jpeg);//关闭IOfs_b.Close();//将二维码图片转化为Image对象Image copyImage = Image.FromFile(filePath + backName);//创建FileStreamFileStream fs = new FileStream(filePath + fileName, FileMode.Open, FileAccess.Read, FileShare.Read);//将背景图片转化为二进制数据byte[] buffer = new byte[fs.Length];int length = 0;int ibyteRead = 0;do{length = fs.Read(buffer, ibyteRead, buffer.Length - ibyteRead);ibyteRead += length;}while (length > 0);MemoryStream mfs = new MemoryStream(buffer);//关闭创建FileStreamfs.Close();fs.Dispose();//创建画布Image bmp = Image.FromStream(mfs);//创建Graphics类Graphics g = Graphics.FromImage(bmp);//设定坐标int x = bmp.Width / 2 - copyImage.Width / 2;int y = ((bmp.Height / 5)*4)/2 - copyImage.Height / 2;//开始在背景图上将画二维码g.DrawImage(copyImage, new Rectangle(x, y, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);g.Dispose();//保存画好的图片bmp.Save(filePath + fileName);copyImage.Dispose();//删除生成的二维码图片if (File.Exists(filePath + backName)){File.Delete(filePath + backName);}}else{Image image = qrCodeEncoder.Encode(QRString, System.Text.Encoding.UTF8);System.IO.FileStream fs = new System.IO.FileStream(filePath + fileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);fs.Close();if (hasLogo){Image copyImage = System.Drawing.Image.FromFile(logoFilePath);Graphics g = Graphics.FromImage(image);int x = image.Width / 2 - copyImage.Width / 2;int y = image.Height / 2 - copyImage.Height / 2;g.DrawImage(copyImage, new Rectangle(x, y, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);g.Dispose();image.Save(filePath + fileName);copyImage.Dispose();}image.Dispose();}}catch (Exception ex){result = false;}return result;} 

使用本方法时请先调用ThougtWorks.QRCode.dll

关于QRCode生成二维码(背景图、Logo)相关推荐

  1. qrcode 生成二维码,带logo 带文字描述

    qrcode 生成二维码 1.引入 pom.xml 2. ResourceRenderer 3. QRCodeUtil 4. QRCodeController 5. HTML 6. 测试 1.引入 p ...

  2. java 通过Qrcode生成二维码添加图片logo和文字描述

    一个简单的javaweb项目 注释比较多直接上代码 附上使用的jar包Qrcode package com.fehorizon.erp.pda.utils;import java.awt.Color; ...

  3. vue 中生成带logo的二维码vue-qr(可换背景) 利用qrcode生成二维码

    vue 中生成带logo的二维码 这里运用了一个插件 vue-qr npm install vue-qr --save <template><div><vue-qr :c ...

  4. Qrcode生成二维码相关问题

    使用Qrcode生成二维码,并提供下载二维码图按钮 JS代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  5. Qrcode生成二维码的参数总结 及最小尺寸的测试

    Qrcode生成二维码,做过很多实验,探索最小规格的二维码到底是多少尺寸,和最高规格的二维码到底是多大尺寸.现在我总结总结: 有两种思路: 1.生成规格高的二维码,然后压缩到自己想要的尺寸的二维码.这 ...

  6. php使用Qrcode生成二维码

    php使用Qrcode生成二维码 首先检查php.ini Gd 库要打开 use QrCode; //控制器引用public function index(){include 'phpqrcode.p ...

  7. qr-code 生成二维码

    1.下载: composer require endroid/qr-code php: >=7.2 2.新建Qrcodes.php二维码生成类 use Endroid\QrCode\ErrorC ...

  8. TP6使用qrcode生成二维码

    经常会碰到系统根据地址生成二维码的使用场景,如健康码,分享商品,邀请用户注册等,使用qrcode生成二维码非常方便,它支持带logo或者不带,也可以设置二维码大小. composer require ...

  9. 使用flask+qrcode生成二维码

    与别人合作开发项目的时候,如果需要对接另一个接口生成的二维码,而别人接口还没有做好,可以自己模拟api接口生成二维码.这里使用mock server模拟接口,而二维码接口可以使用python的flas ...

最新文章

  1. C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明
  2. Pytorch gpu加速方法
  3. 会计基础第一章模拟试题(1)
  4. 生命游戏(Game of Life)描述
  5. 【收藏】wiztree大文件查找软件
  6. Android 图片平铺实现方式
  7. 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群
  8. CF741C Arpa’s overnight party and Mehrdad’s si
  9. 李航《统计学习方法》-----朴素贝叶斯
  10. mysql 触发器 二进制_Mysql 二进制日志格式 对存储过程,函数,触发器,事件的记录方式的影响...
  11. 招聘ASP.net高级Web开发工程师
  12. 顺情说好话,耿直讨人嫌
  13. java 数字字符串排序_对Java中包含数字的字符串进行排序
  14. 一文速学-时间序列分析算法之一次移动平均法和二次移动平均法详解+实例代码
  15. iOS面试合集,面试看这一篇就够了。
  16. 简述数字信号处理的内容和理论
  17. iPad——添加学校邮箱到邮件解决方案
  18. 内蒙古巴丹吉林沙漠锁定2021中国唯一申遗名额
  19. SymPy学习之Plotting Module
  20. 斐波那契数列的四种实现方式(C语言)

热门文章

  1. 视频用txt文件播放物联网
  2. 2023最新彩虹易支付源码免授权2.0版前台模板美化/用户中心美化
  3. RK3568平台开发系列讲解(安卓篇)WakeLock分析
  4. 棋盘覆盖问题C++版
  5. 垃圾分类全套技术方案
  6. 全球顶级黑客对决AI GeekPwn2017黑客大赛看点曝光
  7. Python实现投影法分割图像(一)
  8. 什么是CSS3,CSS3能做什么?
  9. 智能对话 | 使用 Java实现 智能对话机器人
  10. 谷歌站内搜索-祝你流量翻倍!