精华内容
下载资源
问答
  • html创建一个二维码

    2016-08-16 11:58:25
    html创建爱你一个二维码
  • 链接缩短器 链接: 制造: 语言:Python,HTML,Css 特征 1-缩短链接 2获取二维码 建立连结 在输入框中键入链接,它将被创建
  • 使用dBarcodeQR.jar开发包进行开发
  • EFQRCode 一个用 Swift 编写的用来创建和扫描二维码的库,基于系统二维码生成与识别进行开发
  • pycharm创建个性的二维码

    千次阅读 2019-11-27 14:38:12
    pycharm创建二维码 在GitHub上发现了一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码、艺术二维码(黑白/彩色)和动态GIF二维码。 GitHub网站参见:https://github.com/sylnsfar/qrcode ...

    pycharm创建二维码

    在GitHub上发现了一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码、艺术二维码(黑白/彩色)和动态GIF二维码。

    GitHub网站参见:https://github.com/sylnsfar/qrcode

    用法比较简单,直接通过pip安装即可。

    进行安装:

    pip install myqr

     

    主要参数翻译如下:

    -v :定义二维码的大小,范围为 1 ~ 40,默认大小取决于输入的内容

    -l : 定义二维码纠错率,也就是说二维码被遮挡一部分仍然被识别出来,有四个等级,分别是L(7%)、M(15%)、Q(25%)、H(30%),默认情况是最高等级的H

    -n :自定义二维码的名称

    -d : 自定义二维码的路径

    -con:修改图片的对比度,默认值为1.0

    -bri :修改图片的亮度,默认值也为1.0

     

    生成二维码

    生成我的博客地址二维码,使用指令如下:

    myqr https://blog.csdn.net/weixin_45444133

     

    若需要修改生成二维码的名称或者路径可以通过以下的命令来完成,例如生成一个Pycharm3.jpg的二维码图片,路径在E盘的根目录,指令如下:

    myqr https://blog.csdn.net/weixin_45444133 -n pycharm3.jpg -d E:

     

    对于二维码,可以自定义它的大小和容错纠错能力。 

    例如生成大小为10,纠错率为M等级的二维码,指令如下:

    myqr https://blog.csdn.net/weixin_45444133  -v 10 -l M

     

    动态二维码

    艺术二维码虽然好看多了,但是依旧无法达到我们装X的目的,so,可以来个动态的二维码。

    方式跟上面的艺术二维码一样,唯一的区别就是图片必须是gif。默认也是黑白的,彩色二维码也需要加上参数 -c。

    使用下图动图结合的博客地址,生成二维码。

    myqr https://blog.csdn.net/weixin_45444133 -p D:\python项目地点\ulim.gif -c

     

    不知道怎么的传上来就不动了,我这边是动的,亲测无误!

    展开全文
  • php创建带logo二维码

    2018-03-25 17:40:55
    PHP实现创建二维码类,支持设置尺寸,加入LOGO,圆角,透明度,等处理。
  • 我是一名婚纱摄影店的一名摄影师,我们老板最近想在微信上推广我们店子,所以想创建一个二维码,然后我们去发传单,别人用手机扫一扫,就可以加入我们的二维码,看到我们公司的信息?希望大家尽快告诉我,怎样创建
  • Python 创建二维码

    2019-11-15 22:28:28
    Python 创建二维码
  • MyQR是一个能够生成自定义二维码的第三方库,可以根据需要生成普通二维码、带图片的艺术二维码,也可以生成动态二维码 首先配置好python3的环境(也可以用anaconda)和编译器(我用的pycharm)。 pip安装一下myqr库...
  • 用QRCode创建和解析二维码图片

    千次阅读 2018-08-02 14:08:20
    1 用QRCode创建和解析二维码主要有两种方式 1.1 用java代码来实现 二维码如何实现不用关心,只用关心两方法:1 把字符串写进二维码,并且生成图片到destFile public static void qrCodeEncode(String encoded...

    1 用QRCode创建和解析二维码主要有两种方式

    1.1 用java代码来实现

    二维码如何实现不用关心,只用关心两个方法:
    1 把字符串写进二维码,并且生成图片到destFile

    public static void qrCodeEncode(String encodeddata, File destFile)

    2 把二维码信息从imageFile中读取出来

    public static String qrCodeDecode(File imageFile)

    源码下载地址:https://github.com/yuanruofei/QRCode/tree/master/qrcode

    1.2 用javascript实现 (不常用)

    源码下载地址:https://github.com/yuanruofei/QRCode/tree/master/web

     

    展开全文
  • php 创建带logo二维码

    千次阅读 2018-03-25 18:16:17
    本文介绍php实现创建二维码类,支持...1.创建二维码 2.加入logo到二维码中 3.logo可描边 4.logo可圆角 5.logo可设透明度 6.logo图片及输出图片类型支持png,jpg,gif格式 7.可设置输出图片质量 设定参数说...

    本文介绍php实现创建二维码类,支持设置尺寸,加入LOGO,描边、圆角、透明度,等处理。提供完整代码,演示实例及详细参数说明,方便大家学习使用。

    实现功能如下:

    1.创建二维码
    2.加入logo到二维码中
    3.logo可描边
    4.logo可圆角
    5.logo可设透明度
    6.logo图片及输出图片类型支持png,jpg,gif格式
    7.可设置输出图片质量

    设定参数说明:

    ecc
    二维码质量 L-smallest, M, Q, H-best

    size
    二维码尺寸 1-50

    dest_file
    生成的二维码图片路径

    quality
    生成的图片质量

    logo
    logo路径,为空表示不加入logo

    logo_size
    logo尺寸,null表示按二维码尺寸比例自动计算

    logo_outline_size
    logo描边尺寸,null表示按logo尺寸按比例自动计算

    logo_outline_color
    logo描边颜色

    logo_opacity
    logo不透明度 0-100

    logo_radius
    logo圆角角度 0-30

    代码如下:

    PHPQRCode.class.php

    <?php
    require_once dirname(__FILE__)."/qrcode/qrlib.php";
    
    /**
     * PHP创建二维码类
     * Date:    2018-03-18
     * Author:  fdipzone
     * Version: 1.0
     *
     * Description:
     * PHP实现创建二维码类,支持设置尺寸,加入LOGO,圆角,透明度,等处理。
     *
     * Func:
     * public  set_config           设定配置
     * public  generate             创建二维码
     * private create_qrcode        创建纯二维码图片
     * private add_logo             合拼纯二维码图片与logo图片
     * private image_outline        图片对象进行描边
     * private image_fillet         图片对象进行圆角处理
     * private imagecopymerge_alpha 合拼图片并保留各自透明度
     * private create_dirs          创建目录
     * private hex2rgb              hex颜色转rgb颜色
     * private get_file_ext         获取图片类型
     */
    class PHPQRCode{ // class start
    
        /** 默认设定 */
        private $_config = array(
            'ecc' => 'H',                       // 二维码质量 L-smallest, M, Q, H-best
            'size' => 15,                       // 二维码尺寸 1-50
            'dest_file' => 'qrcode.png',        // 创建的二维码路径
            'quality' => 100,                    // 图片质量
            'logo' => '',                       // logo路径,为空表示没有logo
            'logo_size' => null,                // logo尺寸,null表示按二维码尺寸比例自动计算
            'logo_outline_size' => null,        // logo描边尺寸,null表示按logo尺寸按比例自动计算
            'logo_outline_color' => '#FFFFFF',  // logo描边颜色
            'logo_opacity' => 100,              // logo不透明度 0-100
            'logo_radius' => 0,                 // logo圆角角度 0-30
        );
    
        /**
         * 设定配置
         * @param  Array   $config 配置内容
         */
        public function set_config($config){
    
            // 允许设定的配置
            $config_keys = array_keys($this->_config);
    
            // 获取传入的配置,写入设定
            foreach($config_keys as $k=>$v){
                if(isset($config[$v])){
                    $this->_config[$v] = $config[$v];
                }
            }
    
        }
    
        /**
         * 创建二维码
         * @param  String $data 二维码内容
         * @return String
         */
        public function generate($data){
    
            // 创建临时二维码图片
            $tmp_qrcode_file = $this->create_qrcode($data);
    
            // 合拼临时二维码图片与logo图片
            $this->add_logo($tmp_qrcode_file);
    
            // 删除临时二维码图片
            if($tmp_qrcode_file!='' && file_exists($tmp_qrcode_file)){
                unlink($tmp_qrcode_file);
            }
    
            return file_exists($this->_config['dest_file'])? $this->_config['dest_file'] : '';
    
        }
    
        /**
         * 创建临时二维码图片
         * @param  String $data 二维码内容
         * @return String
         */
        private function create_qrcode($data){
    
            // 临时二维码图片
            $tmp_qrcode_file = dirname(__FILE__).'/tmp_qrcode_'.time().mt_rand(100,999).'.png';
    
            // 创建临时二维码
            QRcode::png($data, $tmp_qrcode_file, $this->_config['ecc'], $this->_config['size'], 2);
    
            // 返回临时二维码路径
            return file_exists($tmp_qrcode_file)? $tmp_qrcode_file : '';
    
        }
    
        /**
         * 合拼临时二维码图片与logo图片
         * @param String $tmp_qrcode_file 临时二维码图片
         */
        private function add_logo($tmp_qrcode_file){
    
            // 创建目标文件夹
            $this->create_dirs(dirname($this->_config['dest_file']));
    
            // 获取目标图片的类型
            $dest_ext = $this->get_file_ext($this->_config['dest_file']);
    
            // 需要加入logo
            if(file_exists($this->_config['logo'])){
    
                // 创建临时二维码图片对象
                $tmp_qrcode_img = imagecreatefrompng($tmp_qrcode_file);
    
                // 获取临时二维码图片尺寸
                list($qrcode_w, $qrcode_h, $qrcode_type) = getimagesize($tmp_qrcode_file);
    
                // 获取logo图片尺寸及类型
                list($logo_w, $logo_h, $logo_type) = getimagesize($this->_config['logo']);
    
                // 创建logo图片对象
                switch($logo_type){  
                    case 1: $logo_img = imagecreatefromgif($this->_config['logo']); break;  
                    case 2: $logo_img = imagecreatefromjpeg($this->_config['logo']); break;  
                    case 3: $logo_img = imagecreatefrompng($this->_config['logo']); break;  
                    default: return '';  
                }
    
                // 设定logo图片合拼尺寸,没有设定则按比例自动计算
                $new_logo_w = isset($this->_config['logo_size'])? $this->_config['logo_size'] : (int)($qrcode_w/5);
                $new_logo_h = isset($this->_config['logo_size'])? $this->_config['logo_size'] : (int)($qrcode_h/5);
    
                // 按设定尺寸调整logo图片
                $new_logo_img = imagecreatetruecolor($new_logo_w, $new_logo_h);
                imagecopyresampled($new_logo_img, $logo_img, 0, 0, 0, 0, $new_logo_w, $new_logo_h, $logo_w, $logo_h);
    
                // 判断是否需要描边
                if(!isset($this->_config['logo_outline_size']) || $this->_config['logo_outline_size']>0){
                    list($new_logo_img, $new_logo_w, $new_logo_h) = $this->image_outline($new_logo_img);
                }
    
                // 判断是否需要圆角处理
                if($this->_config['logo_radius']>0){
                    $new_logo_img = $this->image_fillet($new_logo_img);
                }
    
                // 合拼logo与临时二维码
                $pos_x = ($qrcode_w-$new_logo_w)/2;
                $pos_y = ($qrcode_h-$new_logo_h)/2;
    
                imagealphablending($tmp_qrcode_img, true);
    
                // 合拼图片并保留各自透明度
                $dest_img = $this->imagecopymerge_alpha($tmp_qrcode_img, $new_logo_img, $pos_x, $pos_y, 0, 0, $new_logo_w, $new_logo_h, $this->_config['logo_opacity']);
    
                // 生成图片
                switch($dest_ext){
                    case 1: imagegif($dest_img, $this->_config['dest_file'], $this->_config['quality']); break;
                    case 2: imagejpeg($dest_img, $this->_config['dest_file'], $this->_config['quality']); break;
                    case 3: imagepng($dest_img, $this->_config['dest_file'], (int)(($this->_config['quality']-1)/10)); break;
                } 
    
            // 不需要加入logo
            }else{
    
                $dest_img = imagecreatefrompng($tmp_qrcode_file);
    
                // 生成图片
                switch($dest_ext){
                    case 1: imagegif($dest_img, $this->_config['dest_file'], $this->_config['quality']); break;
                    case 2: imagejpeg($dest_img, $this->_config['dest_file'], $this->_config['quality']); break;
                    case 3: imagepng($dest_img, $this->_config['dest_file'], (int)(($this->_config['quality']-1)/10)); break;
                }
            }
    
        }
    
        /**
         * 对图片对象进行描边
         * @param  Obj   $img 图片对象
         * @return Array
         */
        private function image_outline($img){
    
            // 获取图片宽高
            $img_w = imagesx($img);
            $img_h = imagesy($img);
    
            // 计算描边尺寸,没有设定则按比例自动计算
            $bg_w = isset($this->_config['logo_outline_size'])? intval($img_w + $this->_config['logo_outline_size']) : $img_w + (int)($img_w/5);
            $bg_h = isset($this->_config['logo_outline_size'])? intval($img_h + $this->_config['logo_outline_size']) : $img_h + (int)($img_h/5);
    
            // 创建底图对象
            $bg_img = imagecreatetruecolor($bg_w, $bg_h);
    
            // 设置底图颜色
            $rgb = $this->hex2rgb($this->_config['logo_outline_color']);
            $bgcolor = imagecolorallocate($bg_img, $rgb['r'], $rgb['g'], $rgb['b']);
    
            // 填充底图颜色
            imagefill($bg_img, 0, 0, $bgcolor);
    
            // 合拼图片与底图,实现描边效果
            imagecopy($bg_img, $img, (int)(($bg_w-$img_w)/2), (int)(($bg_h-$img_h)/2), 0, 0, $img_w, $img_h);
    
            $img = $bg_img;
    
            return array($img, $bg_w, $bg_h);
    
        }
    
        /**
         * 对图片对象进行圆角处理
         * @param  Obj $img 图片对象
         * @return Obj
         */
        private function image_fillet($img){
    
            // 获取图片宽高
            $img_w = imagesx($img);
            $img_h = imagesy($img);
    
            // 创建圆角图片对象
            $new_img = imagecreatetruecolor($img_w, $img_h);
    
            // 保存透明通道
            imagesavealpha($new_img, true);
    
            // 填充圆角图片
            $bg = imagecolorallocatealpha($new_img, 255, 255, 255, 127);
            imagefill($new_img, 0, 0, $bg);
    
            // 圆角半径
            $r = $this->_config['logo_radius'];
    
            // 执行圆角处理
            for($x=0; $x<$img_w; $x++){
                for($y=0; $y<$img_h; $y++){
                    $rgb = imagecolorat($img, $x, $y);
    
                    // 不在图片四角范围,直接画图
                    if(($x>=$r && $x<=($img_w-$r)) || ($y>=$r && $y<=($img_h-$r))){
                        imagesetpixel($new_img, $x, $y, $rgb);
    
                    // 在图片四角范围,选择画图
                    }else{
                        // 上左
                        $ox = $r; // 圆心x坐标
                        $oy = $r; // 圆心y坐标
                        if( ( ($x-$ox)*($x-$ox) + ($y-$oy)*($y-$oy) ) <= ($r*$r) ){
                            imagesetpixel($new_img, $x, $y, $rgb);
                        }
    
                        // 上右
                        $ox = $img_w-$r; // 圆心x坐标
                        $oy = $r;        // 圆心y坐标
                        if( ( ($x-$ox)*($x-$ox) + ($y-$oy)*($y-$oy) ) <= ($r*$r) ){
                            imagesetpixel($new_img, $x, $y, $rgb);
                        }
    
                        // 下左
                        $ox = $r;        // 圆心x坐标
                        $oy = $img_h-$r; // 圆心y坐标
                        if( ( ($x-$ox)*($x-$ox) + ($y-$oy)*($y-$oy) ) <= ($r*$r) ){
                            imagesetpixel($new_img, $x, $y, $rgb);
                        }
    
                        // 下右
                        $ox = $img_w-$r; // 圆心x坐标
                        $oy = $img_h-$r; // 圆心y坐标
                        if( ( ($x-$ox)*($x-$ox) + ($y-$oy)*($y-$oy) ) <= ($r*$r) ){
                            imagesetpixel($new_img, $x, $y, $rgb);
                        }
    
                    }
    
                }
            }
    
            return $new_img;
    
        }
    
        // 合拼图片并保留各自透明度
        private function imagecopymerge_alpha($dest_img, $src_img, $pos_x, $pos_y, $src_x, $src_y, $src_w, $src_h, $opacity){
    
            $w = imagesx($src_img);
            $h = imagesy($src_img);
    
            $tmp_img = imagecreatetruecolor($src_w, $src_h);
    
            imagecopy($tmp_img, $dest_img, 0, 0, $pos_x, $pos_y, $src_w, $src_h);
            imagecopy($tmp_img, $src_img, 0, 0, $src_x, $src_y, $src_w, $src_h);
            imagecopymerge($dest_img, $tmp_img, $pos_x, $pos_y, $src_x, $src_y, $src_w, $src_h, $opacity);
    
            return $dest_img;
    
        }
    
        /**
         * 创建目录
         * @param  String  $path
         * @return Boolean
         */
        private function create_dirs($path){
    
            if(!is_dir($path)){
                return mkdir($path, 0777, true);
            }
    
            return true;
    
        }
    
        /** hex颜色转rgb颜色
         *  @param  String $color hex颜色
         *  @return Array
         */
        private function hex2rgb($hexcolor){
            $color = str_replace('#', '', $hexcolor);
            if (strlen($color) > 3) {
                $rgb = array(
                    'r' => hexdec(substr($color, 0, 2)),
                    'g' => hexdec(substr($color, 2, 2)),
                    'b' => hexdec(substr($color, 4, 2))
                );
            } else {
                $r = substr($color, 0, 1) . substr($color, 0, 1);
                $g = substr($color, 1, 1) . substr($color, 1, 1);
                $b = substr($color, 2, 1) . substr($color, 2, 1);
                $rgb = array(
                    'r' => hexdec($r),
                    'g' => hexdec($g),
                    'b' => hexdec($b)
                );
            }
            return $rgb;
        }
    
        /** 获取图片类型 
         * @param  String $file 图片路径 
         * @return int 
         */  
        private function get_file_ext($file){
            $filename = basename($file);
            list($name, $ext)= explode('.', $filename);
    
            $ext_type = 0;
    
            switch(strtolower($ext)){
                case 'jpg':
                case 'jpeg':
                    $ext_type = 2;
                    break;
                case 'gif':
                    $ext_type = 1;
                    break;
                case 'png':
                    $ext_type = 3;
                    break;
            }
    
            return $ext_type;
        }
    
    } // class end
    ?>

    demo.php

    <?php
    require 'PHPQRCode.class.php';
    
    $config = array(
            'ecc' => 'H',    // L-smallest, M, Q, H-best
            'size' => 12,    // 1-50
            'dest_file' => 'qrcode.png',
            'quality' => 90,
            'logo' => 'logo.jpg',
            'logo_size' => 100,
            'logo_outline_size' => 20,
            'logo_outline_color' => '#FFFF00',
            'logo_radius' => 15,
            'logo_opacity' => 100,
    );
    
    // 二维码内容
    $data = 'http://weibo.com/fdipzone';
    
    // 创建二维码类
    $oPHPQRCode = new PHPQRCode();
    
    // 设定配置
    $oPHPQRCode->set_config($config);
    
    // 创建二维码
    $qrcode = $oPHPQRCode->generate($data);
    
    // 显示二维码
    echo '<img src="'.$qrcode.'?t='.time().'">';
    ?>

     
    生成的二维码图片:
    这里写图片描述

    源码下载地址:点击查看

    展开全文
  • zxing.java源码解析 ZXing_QRCode ...一个可以根据指定内容生成二维码和解析已有二维码的小工具。生成和解析的二维码都是可支持中文的QR-Code格式。 : ) 具体实现:Java语言开发,基于ZXing开源包。
  • 【delphi Mercadopago阿根廷支付】支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款等功能。api接口文档...
  • 生成带参数二维码接口文档:生成带参数二维码 、介绍 1.1、目前有2种类型的二维码... 永久二维码:永久二维码,是无过期时间的,但数量较少(目前为最多10万),主要用于适用于帐号绑定、用户来源统计等场景 ...

    生成带参数二维码接口文档:生成带参数二维码

    一、介绍

    1.1、目前有2种类型的二维码:

    1. 临时二维码:临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量,主要用于帐号绑定等不要求二维码永久保存的业务场景
    2. 永久二维码:永久二维码,是无过期时间的,但数量较少(目前为最多10万个),主要用于适用于帐号绑定、用户来源统计等场景

    1.2、获取带参数的二维码有两种方式:

     1. 如何获取:先获取二维码ticket,然后凭借ticket通过接口换取二维码图片,但是得到ticket之前首先得获取微信全局唯一接口调用凭据,根据微信返回二维码中url参数自行生成二维码

     2. 二维码参数类型:

    每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket 过程。

    参数可以是整型scene_id,也可以是字符串类型scene_str两种,区别如下:

    scene_id场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000)
    scene_str场景值ID(字符串形式的ID),字符串类型,长度限制为1到64

    二、前期准备

    渠道二维码的作用是方便公众号统计关注的来源,原理是用户扫描带参数的二维码,微信服务器会向开发者服务器推送一条带着EventKey参数消息:
    EventKey :事件KEY值,qrscene_为前缀,后面为二维码的参数值

    推送XML数据包示例:

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[subscribe]]></Event>
    <EventKey><![CDATA[qrscene_123123]]></EventKey>
    <Ticket><![CDATA[TICKET]]></Ticket>
    </xml>

    注: 上面的"123123" 为二维码标识参数值,在用户扫码关注后,会推送上方XML数据包到我们的后台,然后可以从上面推送的XML数据包中获取该带参数二维码的标识符,当然,在代码里肯定是将XML转化成对应的实体类了,也就是从实体类里取出这个标识符,接下来可以进行业务判断了;当然如果是该用户已经关注了公众号,当他扫描带参数二维码时,将会直接推送key值,其实这种情况的不用统计,大家知道一下就好,本来做这个带参数二维码主要是为了统计通过不同渠道二维码扫码关注进来的粉丝数据;已关注的我们忽略不统计此情况;

    三、微信公众号开发框架   

    <!-- 微信框架 参考:https://github.com/Wechat-Group/weixin-java-tools -->
          <dependency>
             <groupId>com.github.binarywang</groupId>
             <artifactId>weixin-java-mp</artifactId>
             <version>3.0.0</version>
          </dependency>
    

    四、扫描带参数二维码事件推送

     这个推送的XML信息通过之前开发者中心处设置的服务器地址获得,因此需要现在微信开发者中心接入我们的服务器地址

    开发者中心处设置的服务器地址如下图:

    1.已关注推送XML示例

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>       //开发者微信号
    <FromUserName><![CDATA[FromUser]]></FromUserName>   //发送者账号(openid)
    <CreateTime>123456789</CreateTime>            //消息创建时间
    <MsgType><![CDATA[event]]></MsgType>                   //消息类型event
    <Event><![CDATA[SCAN]]></Event>              //事件类型 event
    <EventKey><![CDATA[SCENE_VALUE]]></EventKey> //事件key值,是一个32位无符号整数,即创建二维码时的二维码scene_id 
    <Ticket><![CDATA[TICKET]]></Ticket>                    //二维码的ticke,可以用来换取二维码图片
    </xml>

     EventKey 事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id xml处理方式

    2.未关注推送XML示例

    <xml><ToUserName><![CDATA[toUser]]></ToUserName>        //开发者微信号
    <FromUserName><![CDATA[FromUser]]></FromUserName>       //发送者账号(openid)
    <CreateTime>123456789</CreateTime>                //消息创建时间(整型)
    <MsgType><![CDATA[event]]></MsgType>              //消息类型 event
    <Event><![CDATA[subscribe]]></Event>              //事件类型(subscribe)
    <EventKey><![CDATA[qrscene_123123]]></EventKey>//事件KEY值,qrscene_为前缀,后面为二维码参数值
    <Ticket><![CDATA[TICKET]]></Ticket>           //二维码ticke值,可以用来换取二维码图片
    </xml>

     EventKey 事件KEY值,qrscene_为前缀,后面为二维码的参数值

    3. 演示对比,此处我设置带参数二维码的标识符为"123"

    五、封装生成带参数二维码工具类

      WeChatQrcodeUtils:

    import lombok.extern.slf4j.Slf4j;
    import me.chanjar.weixin.common.exception.WxErrorException;
    import me.chanjar.weixin.mp.api.WxMpService;
    import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import java.io.File;
    
    /**
     * <pre>
     * @Description: 生成带参数的二维码
     * @Aouth: cao_wencao
     * @Date: 2019-02-18 15:10
     * </pre>
     */
    @Slf4j
    @Component
    public class WeChatQrcodeUtils {
        @Autowired
        private WxMpService wxMpService;
    
        /**
         * <pre>
         * 创建临时二维码ticket
         * @param sceneId       场景值ID,临时二维码时为32位非0整型
         * @param expireSeconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
         * @auther: cao_wencao
         * @date: 2019/2/18 16:58
         * </pre>
         */
        public WxMpQrCodeTicket qrCodeCreateTmpTicket(int sceneId, Integer expireSeconds) throws WxErrorException {
            WxMpQrCodeTicket wxMpQrCodeTicket = wxMpService.getQrcodeService().qrCodeCreateTmpTicket(sceneId, expireSeconds);
            return wxMpQrCodeTicket;
        }
    
        /**
         * <pre>
         * 创建临时二维码ticket
         * @param sceneStr      场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
         * @param expireSeconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
         * @auther: cao_wencao
         * @date: 2019/2/18 17:01
         * </pre>
         */
        public WxMpQrCodeTicket qrCodeCreateTmpTicket(String sceneStr, Integer expireSeconds) throws WxErrorException {
            WxMpQrCodeTicket wxMpQrCodeTicket = wxMpService.getQrcodeService().qrCodeCreateTmpTicket(sceneStr, expireSeconds);
            return wxMpQrCodeTicket;
        }
    
        /**
         * <pre>
         * 创建永久二维码ticket
         * @param sceneId 场景值ID,最大值为100000(目前参数只支持1--100000)
         * @auther: cao_wencao
         * @date: 2019/2/18 17:03
         * </pre>
         */
        public WxMpQrCodeTicket qrCodeCreateLastTicket(int sceneId) throws WxErrorException {
            WxMpQrCodeTicket wxMpQrCodeTicket = wxMpService.getQrcodeService().qrCodeCreateLastTicket(sceneId);
            return wxMpQrCodeTicket;
        }
    
        /**
         * <pre>
         * 创建永久字符串二维码ticket
         * @param sceneStr 参数。字符串类型长度现在为1到64
         * @auther: cao_wencao
         * @date: 2019/2/18 17:05
         * </pre>
         */
        public WxMpQrCodeTicket qrCodeCreateLastTicket(String sceneStr) throws WxErrorException {
            WxMpQrCodeTicket wxMpQrCodeTicket = wxMpService.getQrcodeService().qrCodeCreateLastTicket(sceneStr);
            return wxMpQrCodeTicket;
        }
    
        /**
         * <pre>
         * 换取二维码图片文件,jpg格式
         * @param ticket 二维码ticket
         * @auther: cao_wencao
         * @date: 2019/2/18 17:07
         * </pre>
         */
        public File qrCodePicture(WxMpQrCodeTicket ticket) throws WxErrorException {
            File file = wxMpService.getQrcodeService().qrCodePicture(ticket);
            return file;
    
        }
    
        /**
         * <pre>
         * 换取二维码图片url地址(可以选择是否生成压缩的网址)
         * @param ticket       二维码ticket
         * @param needShortUrl 是否需要压缩的二维码地址
         * @auther: cao_wencao
         * @date: 2019/2/18 17:10
         * </pre>
         */
        public String qrCodePictureUrl(String ticket, boolean needShortUrl) throws WxErrorException {
            String qrCodeUrl = wxMpService.getQrcodeService().qrCodePictureUrl(ticket, needShortUrl);
            return qrCodeUrl;
        }
    
        /**
         * <pre>
         * 换取二维码图片url地址
         * @param ticket 二维码ticket
         * @auther: cao_wencao
         * @date: 2019/2/18 17:11
         * </pre>
         */
        public String qrCodePictureUrl(String ticket) throws WxErrorException {
            String url = wxMpService.getQrcodeService().qrCodePictureUrl(ticket);
            return url;
        }
    
    }
    

    六、测试生成带参数二维码Controller

      TestQrcodeController :

    import com.thinkgem.jeesite.modules.wechat.commonUtil.WeChatQrcodeUtils;
    import me.chanjar.weixin.common.exception.WxErrorException;
    import me.chanjar.weixin.mp.api.WxMpService;
    import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * <pre>
     * @Desc: 测试生成带参数二维码,   2592000(有效期30天)
     * @Package: com.thinkgem.jeesite.modules.wechat.controller
     * @Author: cao_wencao
     * @Date: 2019-04-08 10:30
     * </pre>
     */
    @Controller
    @RequestMapping("/wechat/qrcode")
    public class TestQrcodeController {
        @Autowired
        private WxMpService wxMpService;
        @Autowired
        private WeChatQrcodeUtils weChatQrcodeUtils;
    
        /**
         * <pre>
         * @desc: 创建生成二维码
         * @auth: cao_wencao
         * @date: 2019/4/10 14:00
         * </pre>
         */
        @RequestMapping("/createQrcode")
        @ResponseBody
        public Object createQrcode(String expireSeconds, int sceneId) throws WxErrorException {
            WxMpQrCodeTicket wxMpQrCodeTicket = weChatQrcodeUtils.qrCodeCreateTmpTicket(sceneId, Integer.valueOf(expireSeconds));
            return wxMpQrCodeTicket;
        }
    
        /**
         * <pre>
         * @desc: 通过ticket获取二维码(长链接URL)
         * @auth: cao_wencao
         * @date: 2019/4/10 14:00
         * </pre>
         */
        @RequestMapping("/getQrcodeUrl")
        @ResponseBody
        public Object getQrcodeUrl(String ticket) throws WxErrorException {
            String url = weChatQrcodeUtils.qrCodePictureUrl(ticket);
            return url;
        }
    
        /**
         * <pre>
         * @desc: 通过ticket获取二维码(短链接URL)
         * @auth: cao_wencao
         * @date: 2019/4/10 14:01
         * </pre>
         */
        @RequestMapping("/qrCodePictureUrl")
        @ResponseBody
        public Object qrCodePictureUrl(String ticket) throws WxErrorException {
            String urlPicture = weChatQrcodeUtils.qrCodePictureUrl(ticket,true);
           // String url= urlPicture.replace("\\/", "/");
            return urlPicture;
        }
    }
    

     

    七、通过postman创建、换取带参数二维码图片

      1. 通过有效期 expireSeconds=2592000和场景标识 sceneId=123创建带参数二维码

    2.通过返回的ticket换取二维码图片url地址

    3.效果展示

     
    展开全文
  • * @param outPutPath 二维码生成保存路径 * @param imageType 二维码生成格式 */ public static void zxingCodeCreate(String text, int width, int height, String outPutPath,String fileName, String image...
  • C#利用ThoughtWorks.QRCode.dll创建和解析二维码
  • 利用myqr库创建自己的二维码

    千次阅读 2020-11-21 23:01:24
    利用myqr库创建自己的二维码 相信朋友们都看过各种群里钓鱼的涩图二维码吧(手动滑稽),今天学了一下制作方式(myqr库的使用),在这里分享一下这整活利器。 首先配置好python3的环境(也可以用anaconda)和...
  • 【delphi Mercadopago阿根廷支付】支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款 ...
  • 创建二维码

    2018-02-12 10:53:59
    //创建二维码 private void createQRcode(Bitmap bitmap,TuiguangModel value) { new AsyncTask&lt;Void, Void, Bitmap&gt;() { @Override protected Bitmap doInBackground(Void... params) { ...
  • 一个易于使用的工具,可使用goqr.me的api创建二维码 特征 为URL或文本创建QR码 暗模式 路线图 WLAN网络的QR码 联系人的QR码 地图位置的QR码 已创建QR码的下载功能 在移动设备和台式机上进行更好的设计(优化...
  • 让你的二维码动起来,充满个性
  • 使用iOS自带框架,生成二维码和扫描二维码,可限制扫描区域,可供简单学习参考
  • 1、导入需要的jar包 QRCode.jar ...提取码:sazv 2、示例代码 public class ORImage { ... //1、创建一个ORCode对象 Qrcode qrcode = new Qrcode(); //2、设置二维码的纠错等级,二维码的纠错等级一共就四个
  • 12.4.2 在线创建二维码

    2021-10-26 10:19:02
    12.4.2 在线创建二维码 生成二维码功能在目前比较常用,下面将通过QNetworkAccessManager类与其他网站提供的数据接口交互,创建二维码图片。程序用到的函数和编程模型与上一节实现的“简易浏览器”类似。常用的数据...
  • 微信公众号生成二维码,是服务号特有的功能,可以设置带参数二维码,微信扫码后推送返回指定内容二维码分为永久和临时,临时二维码有效时间30天,微号帮...创建完渠道二维码后,在界面上选择对应的参数二维码 2、...
  • # version为一个整数,范围1~40,作用表示二维码的大小 # error_correction容错率,挡出部分二维码还能识别,越高可以挡住部分越多,但数据量增加 # 四个等级:H,L,M,Q Q最高,可以挡住25% # box_size 每个...
  • 扫和创建二维码

    2018-05-15 21:30:51
    扫和创建二维码 zxing.zip 的使用 自己写的小程序 测试过有用
  • iOS 创建彩色二维码

    千次阅读 2016-11-22 15:02:57
    因为系统创建二维码默认都是黑色的,所以突然想改变一下二维码颜色,具体操作有点复杂,而且其中用到了好多C语言的语法,Swift不好写,所以默认用了OC。只贴了.m文件的代码,.h文件就是几类函数的声明。 #...
  • IOS 创建彩色二维码 因为系统创建二维码默认都是黑色的,所以突然想改变一下二维码颜色,具体操作有点复杂,而且其中用到了好多C语言的语法,Swift不好写,所以默认用了OC。只贴了.m文件的代码,.h文件就是几类...
  • 创建二维码的demo

    2019-08-10 17:15:55
    创建二维码的demo,健壮的二维码生成工具类,能满足大部分需求业务,支持设置白色边框大小,中间LOGO图片。获取LOGO图片做了优化处理,不用时可以调用dismiss函数清除二维码图片缓存

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,849
精华内容 30,739
关键字:

创建一个二维码