使用Jimp Composite重叠两个图像

时间:2019-07-15 03:15:19

标签: javascript node.js

我真的是一个初学者,并且试图将下面的代码工作几天。

我使用了QR码生成器库,该库允许我在QR码的中间添加徽标。完成此操作后,我试图将此qrcode添加到我的背景图片之上。我打算为此使用jimp复合函数。合并两个图像后,我希望返回一个合并图像的缓冲区。

app.get('/qr', (req, res) => {
  var url = "https://google.com";
  brandedQRCode.generate({
      text: url,
      path: __dirname +'/image/logo.png',
      ratio: 5.2,
      opt: {width: 500 , margin: 0}
    })
    .then(img => {

      var background = '/image/background.png';

      Jimp.read(img, function(){

        // Center the logo
        x = Math.floor((bg.bitmap.width - img.bitmap.width) / 2);
        y = Math.floor((bg.bitmap.height - img.bitmap.height) / 2);

        // Apply on the QRCode
        qrImg = bg.composite(img, x, y);
        new Promise(function (res, rej) {
          qrImg.getBuffer(Jimp.MIME_PNG, function (err, buf) {
            if (err) return rej(err);
            return res(buf);
          });
        });
      });
      return Jimp.read(img);
    })
    .then(image => {
      image.getBuffer(Jimp.MIME_PNG, (err, img) => {
        if (err) return rej(err);
        res.writeHead(200, {
           'Content-Type': 'image/png',
           'Content-Length': img.length
         });
        res.end(img);
      });
    })
    .catch(error => {
      console.log(error);
      res.sendStatus(500);
    });

这段代码给我一个错误:

“ TypeError:无法读取未定义的属性'width'”

任何人都可以帮我,非常感谢!

0 个答案:

没有答案