当前位置:首页 > JavaScript

js实现二维码生成

2026-03-02 02:51:04JavaScript

使用QRCode.js库生成二维码

QRCode.js是一个轻量级的JavaScript库,无需依赖其他库即可生成二维码。以下是具体实现方法:

安装或引入库

<script src="https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js"></script>

基础用法

// 在指定DOM元素中生成二维码
new QRCode(document.getElementById("qrcode"), {
    text: "https://example.com",
    width: 128,
    height: 128
});

高级配置选项

new QRCode(document.getElementById("qrcode"), {
    text: "自定义内容",
    width: 200,
    height: 200,
    colorDark: "#000000",
    colorLight: "#ffffff",
    correctLevel: QRCode.CorrectLevel.H // 纠错级别(L/M/Q/H)
});

使用HTML5 Canvas API原生实现

对于不想引入第三方库的情况,可以通过Canvas原生API实现:

js实现二维码生成

基础绘制函数

function generateQRCode(text, size) {
    const canvas = document.createElement('canvas');
    canvas.width = size;
    canvas.height = size;
    const ctx = canvas.getContext('2d');

    // 这里需要实现二维码算法
    // 实际项目建议使用库,此处仅为示意
    ctx.fillStyle = '#000';
    ctx.fillRect(10, 10, 50, 50);

    return canvas;
}

document.body.appendChild(generateQRCode('test', 200));

通过Node.js后端生成

使用qrcode npm包在服务端生成:

安装包

js实现二维码生成

npm install qrcode

服务端生成示例

const QRCode = require('qrcode');

// 生成DataURL
QRCode.toDataURL('https://example.com', {
    errorCorrectionLevel: 'H',
    type: 'image/png',
    margin: 1
}, (err, url) => {
    console.log(url);
});

// 直接生成文件
QRCode.toFile('./qrcode.png', 'https://example.com', {
    color: {
        dark: '#00F',
        light: '#FFF'
    }
});

生成带Logo的二维码

结合QRCode.js和图像处理实现:

function generateQRWithLogo(text, size, logoUrl) {
    const qrcode = new QRCode(document.getElementById("qrcode"), {
        text: text,
        width: size,
        height: size
    });

    // 异步加载Logo
    const img = new Image();
    img.onload = function() {
        const canvas = document.querySelector("#qrcode canvas");
        const ctx = canvas.getContext('2d');

        // 计算Logo位置和大小
        const logoSize = size * 0.2;
        const x = (size - logoSize) / 2;
        const y = (size - logoSize) / 2;

        ctx.drawImage(img, x, y, logoSize, logoSize);
    };
    img.src = logoUrl;
}

响应式二维码生成

使二维码适应不同屏幕尺寸:

function responsiveQRCode(containerId, text) {
    const container = document.getElementById(containerId);
    const size = Math.min(container.offsetWidth, 400);

    new QRCode(container, {
        text: text,
        width: size,
        height: size
    });

    window.addEventListener('resize', function() {
        container.innerHTML = '';
        const newSize = Math.min(container.offsetWidth, 400);
        new QRCode(container, {
            text: text,
            width: newSize,
            height: newSize
        });
    });
}

生成SVG格式二维码

使用qrcode-generator库生成SVG:

<script src="https://cdn.jsdelivr.net/npm/qrcode-generator@1.4.4/qrcode.min.js"></script>
<script>
    const qr = qrcode(0, 'H');
    qr.addData('https://example.com');
    qr.make();
    document.getElementById('svg-container').innerHTML = qr.createSvgTag();
</script>

以上方法提供了从简单到高级的多种二维码生成方案,可根据项目需求选择适合的实现方式。对于大多数Web应用,推荐使用QRCode.js库,它提供了良好的兼容性和丰富的配置选项。

标签: 二维码js
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…