生成二维码_生成二维码出错 - CSDN
精华内容
参与话题
  • 最近项目中需要开发生成二维码的功能,方便使用手机支付,在网上查了一些资料,把用过的方法进行总结。 1.前端js生成二维码 demo下载:http://download.csdn.net/download/yin767833376/10165335 html页面代码: ...

    最近项目中需要开发生成二维码的功能,方便使用手机支付,在网上查了一些资料,把用过的方法进行总结。

    1.前端js生成二维码

    demo下载:http://download.csdn.net/download/yin767833376/10165335

    html页面代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title></title>
    </head>
    <body>
    <script type="text/javascript" src="js/jquery-1.8.3.min.js" ></script>
    <script type="text/javascript" src="js/jquery.qrcode.js" ></script>
            <script type="text/javascript" src="js/qrcode.js" ></script> 
            <script type="text/javascript" src="js/utf.js" ></script>
    <p>Render in table</p>
    <div id="qrcodeTable"></div>
    <p>Render in canvas</p>
    <div id="qrcodeCanvas"></div>
    <script> 
        jQuery('#qrcodeTable').qrcode({
             render    : "table",                <!--二维码生成方式 -->
             text    : "http://www.baidu.com" , <!-- 二维码内容  -->
             width : "200",               //二维码的宽度
                     height : "200",
         });    
         jQuery('#qrcodeCanvas').qrcode({
          render    : "canvas",
             text    : "http://www.baidu.com",
             width : "200",               //二维码的宽度
                     height : "200",              //二维码的高度
                     background : "#ffffff",       //二维码的后景色
                     foreground : "#000000",        //二维码的前景色
                     src: 'img/gray.jpg'             //二维码中间的图片
         });
        
    </script>
    </body>
    </html>

    页面效果


    方法二:java生成二维码

    demo下载地址:http://download.csdn.net/download/yin767833376/10165628


    需要导入的jar包

    <!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.1</version>
    </dependency>

    生成二维码的工具类,代码如下:

    package com.payplatform.util;


    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;


    import javax.imageio.ImageIO;


    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.Binarizer;
    import com.google.zxing.BinaryBitmap;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.LuminanceSource;
    import com.google.zxing.MultiFormatReader;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.NotFoundException;
    import com.google.zxing.Result;
    import com.google.zxing.WriterException;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    /**
     * Google zxing二维码工具类
     * 
     * @2017年12月20日
     * @author yinxf
     *
     */
    public class QRCodeUtil {
    //二维码颜色  
        private static final int BLACK = 0xFF000000;  
        //二维码颜色  
        private static final int WHITE = 0xFFFFFFFF;  
      
        public static void main(String[] args) throws Exception {
    zxingCodeCreate("http://www.baidu.com", 300, 300, "D:/qrcode.jpg", "jpg");
    //    zxingCodeAnalyze("D:/qrcode.jpg");
    }
        /** 
         * 生成二维码
         * @param text    二维码内容
         * @param width    二维码宽 
         * @param height    二维码高 
         * @param outPutPath    二维码生成保存路径 
         * @param imageType     二维码生成格式 
         */  
        public static void zxingCodeCreate(String text, int width, int height, String outPutPath, String imageType){  
            Map<EncodeHintType, String> his = new HashMap<EncodeHintType, String>();  
            //设置编码字符集  
            his.put(EncodeHintType.CHARACTER_SET, "utf-8");  
            try {  
                //1、生成二维码  
                BitMatrix encode = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, his);  
                  
                //2、获取二维码宽高  
                int codeWidth = encode.getWidth();  
                int codeHeight = encode.getHeight();  
                  
                //3、将二维码放入缓冲流  
                BufferedImage image = new BufferedImage(codeWidth, codeHeight, BufferedImage.TYPE_INT_RGB);  
                for (int i = 0; i < codeWidth; i++) {  
                    for (int j = 0; j < codeHeight; j++) {  
                        //4、循环将二维码内容定入图片  
                        image.setRGB(i, j, encode.get(i, j) ? BLACK : WHITE);  
                    }  
                }  
                File outPutImage = new File(outPutPath);  
                //如果图片不存在创建图片  
                if(!outPutImage.exists())  
                    outPutImage.createNewFile();  
                //5、将二维码写入图片  
                ImageIO.write(image, imageType, outPutImage);  
            } catch (WriterException e) {  
                e.printStackTrace();  
                System.out.println("二维码生成失败");  
            } catch (IOException e) {  
                e.printStackTrace();  
                System.out.println("生成二维码图片失败");  
            }  
        }  
          
        /** 
         * 二维码解析 
         * @param analyzePath    二维码路径 
         * @return 
         * @throws IOException 
         */  
        @SuppressWarnings({ "rawtypes", "unchecked" })  
        public static String zxingCodeAnalyze(String analyzePath) throws Exception{  
            MultiFormatReader formatReader = new MultiFormatReader();  
            String resultStr = null;  
            try {  
                File file = new File(analyzePath);  
                if (!file.exists())  
                {  
                    return "二维码不存在";  
                }  
                BufferedImage image = ImageIO.read(file);  
                LuminanceSource source = new BufferedImageLuminanceSource(image);  
                Binarizer binarizer = new HybridBinarizer(source);    
                BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);  
                Map hints = new HashMap();  
                hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");  
                Result result = formatReader.decode(binaryBitmap, hints); 
                resultStr = result.getText();
            } catch (NotFoundException e) {  
                e.printStackTrace();  
            }    
            return resultStr;  
        }  
          
    }

    以上两种方法均已测试通过,可以直接下载demo运行,查看运行效果。

    展开全文
  • Java实现二维码生成 Google-Zxing

    万次阅读 多人点赞 2020-06-23 17:24:49
    本篇文章将介绍java中如何生成二维码,二维码的展示主要包括两各方面:1.直接生成图片(直接生成图片不需要web程序,maven工程即可) 2.将二维码转为字节数组,然后在web页面显示。web项目的目录结构以前面的一篇...

    本篇文章将介绍java中如何生成二维码,二维码的展示主要包括两各方面:1.直接生成图片(直接生成图片不需要web程序,maven工程即可) 2.将二维码转为字节数组,然后在web页面显示。web项目的目录结构以前面的一篇文章中的目录结构为基础(传送门)。生成二维码的功能主要是依赖Google的Zxing包。

    1.添加Zxing的依赖(maven工程为例)

            <dependency>
            	<groupId>com.google.zxing</groupId>
            	<artifactId>core</artifactId>
            	<version>3.3.0</version>
        	</dependency>
        	<dependency>
            	<groupId>com.google.zxing</groupId>
            	<artifactId>javase</artifactId>
            	<version>3.3.0</version>
        	</dependency>

    2.保存信息为二维码图片

    名为generateQRCodeImage方法,将字符串封装成二维码、设置二维码的宽度和高度、声明二维码保存的路径与图片名称。

    package org.thinkingingis.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.Path;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.WriterException;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.QRCodeWriter;
    
    public class QRCodeGenerator {
    	
    	private static final String QR_CODE_IMAGE_PATH = "/Users/gisboy/Desktop/MyQRCode.png";
    	
    	private static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException {
    		QRCodeWriter qrCodeWriter = new QRCodeWriter();
    		
    		BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
    		
    		Path path = FileSystems.getDefault().getPath(filePath);
    		
    		MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
    		
    	}
    	
    	public static void main(String[] args) {
            try {
                generateQRCodeImage("This is my first QR Code", 350, 350, QR_CODE_IMAGE_PATH);
            } catch (WriterException e) {
                System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage());
            } catch (IOException e) {
                System.out.println("Could not generate QR Code, IOException :: " + e.getMessage());
            }
    		
    	}
    	
    
    }
    

    上面的代码将会生成一个内容为“This is my first QR Code”二维码,并保存在桌面,如下图:

    上面的方法是将二维码保存为图片,如果你不想将二维码保存为图片,也可以将其保存为字节数组,可以用zxing 库提供的MatrixToImageWriter.writeToStream()方法:

        public static byte[] getQRCodeImage(String text, int width, int height) throws WriterException, IOException {
            QRCodeWriter qrCodeWriter = new QRCodeWriter();
            BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
            
            ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();
            MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream);
            byte[] pngData = pngOutputStream.toByteArray(); 
            return pngData;
        }

    这个方法可以将字节数组在web页面展示为图片形式。结合Spring Boot + Thymeleaf搭建的web工程,如果想在页面显示该二维码信息的话,需要在html页面和controller中完成如下代码:

    qrcode.html

    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <link rel="stylesheet" type="text/css" href="webjars/bootstrap/3.3.7/css/bootstrap.min.css"/>
        <script type="text/javascript" src="webjars/jquery/2.2.4/jquery.min.js"></script>
    </head>
    <body>
    <div th:replace="fragments/header :: header"></div>
    <div class="container">
        <div class="starter-template">
            <h1>QrCodeImage</h1>
        </div>
    </div>
    <div class="container">
    	<img alt="qrcode" th:src="@{'/qrimage'}" />
        <footer>
            <p>
                © <a >ThinkingInGIS</a> 2019
            </p>
        </footer>
    </div>
    </body>
    </html>

    DefaultController.java

       @GetMapping("qrcode")
        public String qrcode() {
        	return "/qrcode";
        }
        
        @GetMapping(value="/qrimage")
    	public ResponseEntity<byte[]> getQRImage() {
    		
    		//二维码内的信息
    		String info = "This is my first QR Code";
    		
    		byte[] qrcode = null;
    		try {
    			qrcode = QRCodeGenerator.getQRCodeImage(info, 360, 360);
    		} catch (WriterException e) {
    			System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage());
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.println("Could not generate QR Code, IOException :: " + e.getMessage());
    		} 
    
    	    // Set headers
    	    final HttpHeaders headers = new HttpHeaders();
    	    headers.setContentType(MediaType.IMAGE_PNG);
    
    	    return new ResponseEntity<byte[]> (qrcode, headers, HttpStatus.CREATED);
    	}

    请注意qrcode.html中<img>标签中 src属性的值。

    启动spring boot程序,访问该页面,运行结果如下图:

    源码地址:https://github.com/ThinkingInGIS/spring-boot-security

    至此,一个简单的生成二维码程序,并在web中展示的功能就搭建好了。
    (如遇到问题,请留言给作者,以便共同探讨gis知识。thinkingingis@qq.com)
    更多干货 欢迎关注微信公众号: ThinkingInGIS

    如果觉得本文对你有帮助,是可以赞赏作者的哦

    展开全文
  • 如何使用 Python 生成酷炫的二维码

    万次阅读 多人点赞 2018-08-21 00:13:30
    新时代,人们有新的追求,自然而然会有新发明的诞生。去年,在“一带一路”国际合作高峰论坛举行期间,20 国青年投票选出中国的“新四大发明”:高铁、扫码支付、共享单车和网购。...
        

    640?wx_fmt=gif

    640?wx_fmt=jpeg

    新时代,人们有新的追求,自然而然会有新发明的诞生。去年,在“一带一路”国际合作高峰论坛举行期间,20 国青年投票选出中国的“新四大发明”:高铁、扫码支付、共享单车和网购。其中扫码支付指手机通过扫描二维码跳转到支付页面,再进行付款。这种新的支付方式,造就二维码满天飞的现象。

    那么让我们来扒一扒如何使用 Python 生成二维码图片。


    640?wx_fmt=png

    二维码


    二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它能将数字、英文字母、汉字、日文字母、特殊符号(如空格,%,/ 等)、二进制等信息记录到一个正方形的图片中。

    因此,在转换的过程中,离不开编码压缩方式。在许多种类的二维条码中,常用的码制有:Data Matrix,Maxi Code,Aztec,QR Code,Vericode,PDF417,Ultracode,Code 49,Code 16K等。

    二维码在现实生活中的应用越来与普遍,归功于 QR code 码制的流行。我们常说的二维码就是它,所以,二维码又被称为 QR code。

    QR code 是一种矩阵式二维条码(又称棋盘式二维条码)。它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。


    640?wx_fmt=png

    二维码结构


    我们的目的是要使用 Python 生成 QR 码,那我们需要先了解二维码(QR 码)的结构。

    根据标准(ISO/IEC 18004),我们可以了解到 QR 码结构如下:

    640?wx_fmt=png

    图片来源于网络

    1、功能图形

    功能图形是不参与编码数据的区域。它包含空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形五大模块。

    • 空白区:空白区顾名思义就是要留空白。因此,这里不能有任何图样或标记,这样才能保证 QR 能被识别。

    • 位置探测图形:这个有点类似中文的“回”字。在 QR 码中有个这样的标识,它分别位于左上、右上和左下角,作用是协助扫描软件定位 QR 码并转换坐标系。我们在扫描二维码的时候,不管是竖着扫、横着扫、斜着扫都能识别出内容,主要是它的功劳。

    • 位置探测图形分隔符:主要作用是区分功能图形和编码区域。

    • 定位图形:它由黑白间隔的格子组成的线条,主要用于指示标识密度和确定坐标系。原因是 QR 码一种有 40 个版本,也就是说有 40 种尺寸。每种二维码的尺寸越大,扫描的距离就越远。

    • 校正图形:只有 Version 2 及以上的QR码有校正标识,校正标识用于进一步校正坐标系。

    2、 编码区域

    编码区域是数据进行编码存储的区域,它由格式信息、版本信息、数据和纠错码字三部分构成。

    • 格式信息:所有尺寸的二维码都有该信息。它存放一些格式化数据的信息,例如容错级别、数据掩码,和额外的自身 BCH 容错码。

    • 版本信息:版本信息是规定二维码的规格。前面讲到 QR 码一共有 40 种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本的每边增加4个模块。

    • 数据和纠错码:主要是存储实际数据以及用于纠错码字。


    640?wx_fmt=png

    二维码的绘制过程


    二维码已经有一套国际标准了,所以绘制二维码的过程要严格按照标准来执行。这个过程比较复杂,下面总结出了大致绘制过程。如果你想深入了解绘制细节,可以阅读具体标准。

    二维码的绘制大概过程如下:

    • 在二维码的左上角、左下角、右上角绘制位置探测图形,位置探测图形一定是一个 7x7 的矩阵;

    • 绘制校正图形,校正图形一定是一个 5x5 的矩阵;

    • 绘制两条连接三个位置探测图形的定位图形;

    • 在上述图片的基础上,继续绘制格式信息;

    • 接着绘制版本信息;

    • 填充数据码和纠错码到二维码图中;

    • 最后绘制蒙版图案。因为按照上述方式填充内容,可能会出现大面积空白或黑块的情况,导致扫描识别十分困难。所以需要对整个图像与蒙版进行蒙版操作(Masking),蒙版操作即为异或 XOR 操作。在这一步,我们可以将数据排列成各种图片。


    640?wx_fmt=png

    二维码的生成


    我们既然已经了解二维码原理,那么可以利用 Python 生成二维码。网络上高人比比皆是,已经有大神编写了 Python 生成二维码的第三方库,所以我们不需要重复造轮子, 使用现成的库即可。

    我就推荐两个库:qrcode 和 python-qrcode。

    1、qrcode

    qrcode 运行在 Python 3 版本上,它可以玩出很多花样。例如能生成以下三种二维码图片:普通二维码、带图片的艺术二维码(黑白与彩色)、动态二维码(黑白与彩色)。它比较适合直接用于生成二维码图片的场景。

    安装 qrcode 库可以使用 pip 方式。但是该库依赖 pillow、numpy 和 imageio。因此,我们需要先安装依赖库,再安装 qrcode。最后的安装命令如下:

    # 逐一安装
    pip install pillow
    pip install numpy
    pip install imageio
    pip install myqr

    该库生成带图片的艺术二维码算是一大亮点,具体用法如下:

    myqr https://github.com -p github.jpg -c

    上述命令作用是将 Github 主页写到彩色二维码中。

    640?wx_fmt=jpeg

    该库还支持生成 Gif 的彩色二维码图片,具体用法如下:

    myqr https://github.com -p github.gif -c -con 1.5 -bri 1.6

    效果图如下:

    640?wx_fmt=gif

    最后补上该库的 Github 地址:https://github.com/sylnsfar/qrcode/。

    2、python-qrcode

    python-qrcode 相比 qrcode 要稍微逊色一点。不过它也有自己的特色,它支持生成矢量图,而且比较适合在代码中生成二维码的场景。

    安装 python-qrcode 同样建议使用 pip 方式,安装命令如下:

    pip install qrcode

    在 Python 代码中,最简单的用法是这样。

    import qrcode
    img = qrcode.make('https://github.com')

    它也支持自定义二维码的信息,具体用法如下:

    import qrcode
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data('https://github.com')
    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")

    如果你想深入了解该库,可以到 Github 仓库阅读相关的文档。

    Github 地址:https://github.com/lincolnloop/python-qrcode。

    作者:极客猴,热衷于 Python,目前擅长于利用 Python制作网路爬虫以及 Django 框架。

    声明:本文为作者投稿,版权归对方所有。

    640?wx_fmt=gif

    640?wx_fmt=gif

    展开全文
  • [273]python生成个性二维码

    千次阅读 2020-06-09 21:34:53
    现在,我们生活中到处可以看到二维码。它有啥好处呢?它具有信息容量大、可靠性高、可表示汉字及图象多种文字...python 有qrcode库,很容易就生成二维码。现在在需要使用Python图像库的时候一般是用 Pillow 模块代替...

    更多精选文章,请关注公众号:python前行者
    python前行者

    现在,我们生活中到处可以看到二维码。它有啥好处呢?它具有信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。

    我们生成的东西一般都在电脑上。如果弄到移动设备上,用到最多的是扫码。在移动设备浏览器中输入URL明显没有扫描二维码方便。

    就是这个:

    image.png

    python 有qrcode库,很容易就生成二维码。现在在需要使用Python图像库的时候一般是用 Pillow 模块代替PIL。安装非常简单:

    pip install pillow
    

    安装 qrcode 也是类似:

    pip install qrcode
    

    在Python中也可以用如下的方式快速生成:

    import qrcode
    
    # 方法1
    def qr_code_1():
        #调用qrcode的make()方法传入url或者想要展示的内容
        img = qrcode.make('https://blog.csdn.net/xc_zhou')
        #保存
        img.save("./img/text1.png")
        # 或者
        with open('./img/test2.png', 'wb') as f:
            img.save(f)
            
    qr_code_1()
    

    更高级一些的设置需要在Python中引入QRCode类:

    • 示例代码1:
    import qrcode
    
    # 方法2
    def qr_code_2():
        '''
        参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码矩阵,
        version 每增加 1,生成的二维码就会添加 4 个单位大小,例如 version 是 2,则生成 25 * 25 尺寸大小的二维码。
    
        参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
        ERROR_CORRECT_L: 7%的字码可被容错
        ERROR_CORRECT_M: 15%的字码可被容错
        ERROR_CORRECT_Q: 25%的字码可被容错
        ERROR_CORRECT_H: 30%的字码可被容错
    
        参数 box_size 表示二维码里每个格子的像素大小。
        参数 border 表示边框的格子宽度是多少(默认是4)
        '''
        # 实例化QRCode生成qr对象
        qr = qrcode.QRCode(
            version=2,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=10,
            border=1
        )
        # 调用qrcode的make()方法传入url或者想要展示的内容
        qr.add_data("python前行者公众号")
        qr.make(fit=True)# 填充数据
        img = qr.make_image() # 生成图片
        img.save("./img/test3.png")
    
    qr_code_2()
    

    生成的结果为:


    微信扫描的结果是:

    参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码矩阵,version 每增加 1,生成的二维码就会添加 4 个单位大小,例如 version 是 2,则生成 25 * 25 尺寸大小的二维码。

    参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
    ERROR_CORRECT_L: 7%的字码可被容错
    ERROR_CORRECT_M: 15%的字码可被容错
    ERROR_CORRECT_Q: 25%的字码可被容错
    ERROR_CORRECT_H: 30%的字码可被容错

    参数 box_size 表示二维码里每个格子的像素大小。
    参数 border 表示边框的格子宽度是多少(默认是4)。

    示例代码2(生成带有图标的二维码):

    # -*- coding:utf-8 -*-
    import qrcode,time
    from PIL import Image
    import matplotlib.pyplot as plt
    
    
    # 方法3  生成带有图标的二维码
    def qr_code_3():
        # 实例化QRCode生成qr对象
        qr = qrcode.QRCode(
            version=2,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=10,
            border=1
        )
        qr.add_data("https://blog.csdn.net/xc_zhou")# 添加数据
        qr.make(fit=True)# 填充数据
        # 生成图片
        # img = qr.make_image()
        img = qr.make_image(fill_color="green", back_color="white")
        img = img.convert("RGBA")
        # 添加logo,打开logo照片
        icon = Image.open("我的头像.jpg").convert("RGBA")
        # 获取图片的宽和搞
        img_w, img_h = img.size
        # 参数设置logo的大小
        factor = 3
        size_w = int(img_w / factor)
        size_h = int(img_h / factor)
        icon_w, icon_h = icon.size
        if icon_w > size_w:
            icon_w = size_w
        if icon_h > size_h:
            icon_h = size_h
        # 重新设置logo的尺寸
        icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
        # 得到画图的x,y坐标,居中显示
        w = int((img_w - icon_w) / 2)
        h = int((img_h - icon_h) / 2)
        '''
        img.paste(path,where,mask=None)
        其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标
        '''
        # 黏贴logo照
        img.paste(icon, (w, h), icon)
        img.save("我的CSDN二维码.png")
        # img.show()# 自动打开图片
        # 终端显示图片
        plt.imshow(img)
        plt.show()
    
    if __name__=='__main__':
        qr_code_3()
    

    如此,就将以下图片
    在这里插入图片描述

    生成二维码:

    在这里插入图片描述
    如果是下载URL,扫描后就可以直接下载了。
    放到jenkins上,每次生成的build,直接扫码就可以下载到手机上了。

    code

    # -*- coding:utf-8 -*-
    import qrcode,time
    from PIL import Image
    import matplotlib.pyplot as plt
    
    
    # 方法1
    def qr_code_1():
        #调用qrcode的make()方法传入url或者想要展示的内容
        img = qrcode.make('https://blog.csdn.net/xc_zhou')
        #保存
        img.save("./img/text1.png")
        # 或者
        with open('./img/test2.png', 'wb') as f:
            img.save(f)
    
    # 方法2
    def qr_code_2():
        '''
        参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码矩阵,
        version 每增加 1,生成的二维码就会添加 4 个单位大小,例如 version 是 2,则生成 25 * 25 尺寸大小的二维码。
    
        参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
        ERROR_CORRECT_L: 7%的字码可被容错
        ERROR_CORRECT_M: 15%的字码可被容错
        ERROR_CORRECT_Q: 25%的字码可被容错
        ERROR_CORRECT_H: 30%的字码可被容错
    
        参数 box_size 表示二维码里每个格子的像素大小。
        参数 border 表示边框的格子宽度是多少(默认是4)
        '''
        # 实例化QRCode生成qr对象
        qr = qrcode.QRCode(
            version=2,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=10,
            border=1
        )
        # 调用qrcode的make()方法传入url或者想要展示的内容
        qr.add_data("python前行者公众号")
        qr.make(fit=True)# 填充数据
        img = qr.make_image() # 生成图片
        img.save("./img/test3.png")
    
    # 方法3  生成带有图标的二维码
    def qr_code_3():
        # 实例化QRCode生成qr对象
        qr = qrcode.QRCode(
            version=2,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=10,
            border=1
        )
        qr.add_data("https://blog.csdn.net/xc_zhou")# 添加数据
        qr.make(fit=True)# 填充数据
        # 生成图片
        # img = qr.make_image()
        img = qr.make_image(fill_color="green", back_color="white")
        img = img.convert("RGBA")
        # 添加logo,打开logo照片
        icon = Image.open("我的头像.jpg").convert("RGBA")
        # 获取图片的宽和搞
        img_w, img_h = img.size
        # 参数设置logo的大小
        factor = 3
        size_w = int(img_w / factor)
        size_h = int(img_h / factor)
        icon_w, icon_h = icon.size
        if icon_w > size_w:
            icon_w = size_w
        if icon_h > size_h:
            icon_h = size_h
        # 重新设置logo的尺寸
        icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
        # 得到画图的x,y坐标,居中显示
        w = int((img_w - icon_w) / 2)
        h = int((img_h - icon_h) / 2)
        '''
        img.paste(path,where,mask=None)
        其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标
        '''
        # 黏贴logo照
        img.paste(icon, (w, h), icon)
        img.save("我的CSDN二维码.png")
        # img.show()# 自动打开图片
        # 终端显示图片
        plt.imshow(img)
        plt.show()
    
    
    if __name__=='__main__':
        qr_code_2()
    

    python生成动态个性二维码

    pip install myqr
    

    1、生成普通二维码

    安装了 myqr 之后,就可以在命令行中使用它了。假如我想要将 http://www.rablive.cn 字符串生成一个二维码,则只需要将在命令行中输入以下命令即可:

    myqr http://www.rablive.cn
    

    运行后,myqr 会将生成的二维码保存在当前路径下,名称为 qrcode.png

    2、带图片的二维码

    如果想要生成艺术二维码,则可以使用 -p 参数指定图片,将二维码与该图片结合在一起

    myqr http://www.rablive.cn -p rablive.png
    

    默认生成的结果是黑白的,如果想要生成彩色的,可以加上参数 -c。

    myqr http://www.rablive.cn -p rablive.png -c -n rablive_qrcode_c.png
    

    3、动态GIF二维码

    如果想要生成动态GIF二维码,方式与上面的带图片的二维码的生成方式没有区别,只是将原始的 png/.jpg 图片换成 gif 即可。

    参考:https://www.jianshu.com/p/30b6ec813b4f
    https://www.jianshu.com/p/c0073c6aa544

    展开全文
  • 二维码生成器和二维码扫描器

    千次阅读 2016-07-13 00:14:41
    二维码生成二维码扫描 一)二维码生成器 下载demo: 1.导入库文件( libqrencode)  配置:开启这个HAVE_CONFIG_H宏定义 如下图  build settings--> Preprocessor Macros ->添加 “HAVE_CONFIG...
  • 二维码生成原理及解析代码

    千次阅读 2019-06-14 17:38:19
    这里秉着好奇心,研究一下二维码生成,并尝试性写一个二维码解析源码。 一. 二维码基本知识 二维码另一个名称是QR Code(Quick Response Code),近年来在移动设备上经常使用,与传统条形码相比,可以存储更多的...
  • Android生成自定义二维码

    万次阅读 多人点赞 2019-11-13 10:20:38
    前面说过两种二维码扫描方式,现在说二维码生成,使用Google开源库Zxing,项目地址:https://github.com/ZBar/ZBar,我们只需要里面的jar包:core:x.x.x.jar,建议用core:3.3.0。 1.引入jar包 app build....
  • 二维码生成原理

    万次阅读 2018-03-20 12:07:04
    QR码生成原理(一) 一、什么是QR码 QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。QR码的样子其实在很多场合已经能够被看到了,我这还是贴个图展示一下: 这个图如果被正确...
  • 1、用的二维码库是:zxing_core_3.3.1.jar; import android.graphics.Bitmap; import android.graphics.Canvas; import android.util.Log; import com.google.zxing.BarcodeFormat; import ...
  • C# 利用QRCode生成二维码图片

    万次阅读 多人点赞 2020-06-10 14:26:14
    网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快。但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴。这是本要用它做了一个...
  • pb生成二维码

    千次下载 热门讨论 2020-07-30 23:32:50
    pb生成二维码源代码 二维码是QR 二维码 QR码是二维条码的一种,QR 来自英文 “Quick Response” 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码。QR码比普通条码可储存更多资料,亦无需像...
  • 生成二维码

    千次阅读 2016-01-19 12:39:15
    我们简单的使用一下CIFilter来完成二维码生成,解剖一下二维码生成过程查找到 kCICategoryBuiltIn 内建的滤镜名 NSArray *filterNames = [CIFilter filterNamesInCategory:kCICategoryBuiltIn]; NSLog(@"%@",...
  • Java服务端生成二维码,在前端渲染展示

    万次阅读 多人点赞 2020-08-15 11:56:59
    java后台生成二维码,并在前端网页上显示 我做的是在网站内容详情页下点击微信分享,需要弹出二维码,话不多说,直接看效果: 首先在前端页面定义二维码容器,用来存放后台生成的二维码(下面是对应上图中的三...
  • 如何用C代码生成二维码

    万次阅读 2018-12-27 12:20:25
    如何用C代码生成二维码 如何用C代码生成二维码  当下因微信和支付宝等手机应用广泛使用,而基于二维码/一维条码的移动支付,也借助手机移动端席卷全国,使得越来越多的人知道有“二维码”这么一种...
  • 读取excel批量生成二维码

    千次阅读 2017-12-26 13:34:51
    读取excel,批量生成二维码.简化工作量 偷懒的好办法.
  • Java用ZXing开发一般的二维码和带图片的二维码,模仿微信二维码的效果实现。 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多...
  • JS 生成二维码实现(qrcode.js)

    万次阅读 2018-05-31 10:07:18
    qrcode.js源码地址: https://github.com/jeromeetienne/jquery-qrcode 使用 页面引入QRCode.js和JQuery.js &amp;amp;lt;script src=&amp;quot;../static/jquery-3.2.1.min.js&...../static/
  • ASP生成二维码代码

    热门讨论 2020-07-28 23:33:31
    ASP生成二维码,不过不好用,还是DEMO版本,建议需要的下载参考一下就行了,没有实用价值。
  • springboot 生成二维码

    千次阅读 2017-11-21 10:25:32
    现如今二维码应用越来越广泛,那么如何生成二维码呢? 最近公司里要求开发一套会员系统,会员码要求设计成二维码形式,方便扫面获取会员信息,网上找了找二维码生成的api,发现生成的方式简单的很,一些网站直接输入...
  • 二维码生成是使用 google 开源图形码工具Zxing。 maven依赖如下: <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1<...
1 2 3 4 5 ... 20
收藏数 82,837
精华内容 33,134
关键字:

生成二维码