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

27

28

29

30

31

32

33

34

35

36

37

38

<div id="qrcode" style="width:100px; height:100px;margin: 10px 38px;"></div>

<a id="downloadLink"></a>

<a class="btn btn-mini btn-success" onclick="downloadClick()">下载</a>

 

<script type="text/javascript" src="static/js/qrcode.js"></script>

<script type="text/javascript"

    var url =#(activityErWeiMaURL);

    //生成二维码

    var qrcode = new QRCode(document.getElementById("qrcode"), {

        text: url, //生成二维码的内容(链接或者其他)

        width: 200, //生成的二维码的宽度

        height: 200, //生成的二维码的高度

        colorDark : "#000000"// 生成的二维码的深色部分

        colorLight : "#ffffff"//生成二维码的浅色部分

        correctLevel : QRCode.CorrectLevel.L,//纠错等级  

        background : "#ffffff",//背景颜色  

        foreground : "#000000",//前景颜色

        src : '../img/pm.jpg'  //二维码中间的图片

  });

    //下载二维码

  function downloadClick () {

      var name= "#(name)";

        // 获取base64的图片节点

        var img = document.getElementById('qrcode').getElementsByTagName('img')[0];

        // 构建画布

        var canvas = document.createElement('canvas');

        canvas.width = img.width;

        canvas.height = img.height;

        canvas.getContext('2d').drawImage(img, 0, 0);

        // 构造url

        url = canvas.toDataURL('image/png');

        // 构造a标签并模拟点击

        var downloadLink = document.getElementById('downloadLink');

        downloadLink.setAttribute('href', url);

        downloadLink.setAttribute('download', name+'.png');

        downloadLink.click();

      }

</script>

155186290527545024978.jpg

将生成的二维码替换为图片格式,使得手机可以长按保存操作:

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

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

    <div id="qrcode" style="width:250px; height:250px;margin: 0 auto;"></div>

   <div id="qrcodeNone" style="display: none;"></div>

    

<script type="text/javascript" src="static/js/qrcode.js"></script>

<script type="text/javascript">

function qrcodeStart(packagesId){

    $("img[alt='Scan me!']").remove(); //重复生成二维码时,删除前一张

    $("#qrcode").html(""); //重复生成二维码时,删除前一张(手机端加上这个才能清除)

    $("#qrcodeNone").html(""); //重复生成二维码时,清除前一张

 

    var urlLink = $('#pagelink').val();

    var codesmer= $('#codesmer').val();

    var url = urlLink + "codepage/codepage?codesmer=" + codesmer+"&&packagesId="+packagesId; //根据需求拼接地址

    var qrcode = new QRCode(document.getElementById("qrcodeNone"), {

            text: url,

            width: 200, //生成的二维码的宽度

            height: 200, //生成的二维码的高度

            colorDark : "#000000"// 生成的二维码的深色部分

            colorLight : "#ffffff"//生成二维码的浅色部分

            correctLevel : QRCode.CorrectLevel.L

          });

     //获取网页中的canvas对象

    var mycanvas1=document.getElementsByTagName('canvas')[0];

    mycanvas1.style.display = 'none';//隐藏生成的canvas

    //将转换后的img标签插入到html中

    var img=convertCanvasToImage(mycanvas1);

 

    $('#qrcode').append(img);//imagQrDiv表示你要插入的容器id

    };

     

 

    //从 canvas 提取图片 image

    function convertCanvasToImage(canvas) {

        //新Image对象,可以理解为DOM

        var image = new Image();

        // canvas.toDataURL 返回的是一串Base64编码的URL,当然,浏览器自己肯定支持

        // 指定格式 PNG

        image.src = canvas.toDataURL("image/png");

        return image;

    }

</script>

Java生成方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

String text = contextPath + "codepage/codepage?code=" + merchantInfo.getExtensionCode();

 

 private String getQRImg(String text, MerchantInfo merchantInfo) {

        String fileName = "";

        try {

            // 设置二维码参数

            Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();

            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

            BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 150150, hints);

            // 返回二维码

            BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);

            ByteArrayOutputStream os = new ByteArrayOutputStream();

            ImageIO.write(bufferedImage, "jpg", os);

            InputStream is = new ByteArrayInputStream(os.toByteArray());

            fileName = FileUpload.fileUp(is, Tools.getRandomString(7), ".jpg", os.size());

        catch (Exception e) {

            e.printStackTrace();

        }

        return fileName;

    }

155186297747257010968.jpg

155186291940159057558.jpg

其他:

参数说明

new QRCode(element, option)
名称默认值说明
element-显示二维码的元素或该元素的 ID
option 参数配置

option 参数说明

名称默认值说明
width256图像宽度
height256图像高度
typeNumber4 
colorDark"#000000"前景色
colorLight"#ffffff"背景色
correctLevelQRCode.CorrectLevel.L容错级别,可设置为:

QRCode.CorrectLevel.L

QRCode.CorrectLevel.M

QRCode.CorrectLevel.Q

QRCode.CorrectLevel.H

API 接口

名称说明
makeCode(text)设置二维码内容
clear()清除二维码。(仅在不支持 Canvas 的浏览器下有效)

 

标签:#Qrcode

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值