javascript - 我正在将 Logo 添加到二维码中心,但图像质量很差。如何提高品质?

标签 javascript node.js reactjs html5-canvas qr-code

这是我的函数,我通过它向二维码添加 Logo 。

const qrcode = require('qrcode');
const { createCanvas, loadImage } = require('canvas');

//Using canvas I am adding logo to center of image(center_image) and also passing width
async function create(dataForQRcode, center_image, width, cwidth) {
  const canvas = createCanvas(width, width);
  qrcode.toCanvas(canvas, dataForQRcode, {
    errorCorrectionLevel: 'H',
    version: 5,
    margin: 1,
    color: {
      dark: '#000000',
      light: '#ffffff',
    },
  });

  const ctx = canvas.getContext('2d');
  const img = await loadImage(center_image);
  const center = (width - cwidth) / 2;

  //and using drawImage I am adding logo to qr code

  ctx.drawImage(img, center, center, cwidth, cwidth);
  return canvas.toDataURL('image/jpeg', 1.0);
}

这里我调用该函数并传递所有参数。

const QRcode = await create(
    "Hello guys",
    "https://images.pexels.com/photos/10013232/pexels-photo-10013232.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500",
    140,
    20
);

之后我得到了中心带有 Logo 的二维码,但 Logo 的质量非常差。我不知道如何提高图像质量。

最佳答案

qrcode.toCanvas选项中添加宽度

qrcode.toCanvas(canvas, dataForQRcode, {
    errorCorrectionLevel: 'H',
    version: 5,
    margin: 1,
    width: width,
    color: {
        dark: '#000000',
        light: '#ffffff',
    },
});

关于javascript - 我正在将 Logo 添加到二维码中心,但图像质量很差。如何提高品质?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69922841/

相关文章:

javascript - 用于在文件中进行更改的客户端脚本

javascript - 有没有更有效的方法来对这个数组进行排序?

javascript - create-react-app eslint error "Parsing error: ' import' and 'export' may appear only with 'sourceType: module' "

javascript - JSPM - jspm 安装给出错误 "Registry not found"

node.js - 如何在不增加太多大小的情况下使用 crypto 加密文本?

node.js - 不使用 npm 卸载 npm - 可能吗?

html - Div 容器,左侧有文本,右侧有溢出图像

javascript - React onClick 未在 map 生成列表内触发

javascript - Math.random 重复数字 JavaScript

javascript - 使用 react Hook 形式删除不受控制的 "ChipInput"中的标签