JS использовать drawImage (Image, ...) в Image.onload в кодах скриншота - PullRequest
0 голосов
/ 16 января 2020

Я читаю chrome коды расширения для захвата полного снимка экрана, и вот фрагмент кодов, которые я не могу понять, логи c позади (https://github.com/erichua23/prj/blob/676e98366c6a25c56b2e342a3aecec76ae076391/screenshot/background.js#L63):

chrome.tabs.captureVisibleTab(this.tabId, { format: "png" }, function(img) {
  var blockImg = new Image();
  var canvas = self.canvas;

  if (Capturer.yPos + Capturer.clientHeight >= Capturer.scrollHeight) {
    blockImg.onload = function() {
      var ctx = canvas.getContext("2d");
      var y = Capturer.clientHeight - Capturer.scrollHeight % Capturer.clientHeight;
      ctx.drawImage(blockImg, 0, 0, width, height, 0, self.yPos - y, width, height);
      Capturer.postImg();
    };
  } else {
    blockImg.onload = function() {
      var ctx = canvas.getContext("2d");
      ctx.drawImage(blockImg, 0, 0, width, height, 0, Capturer.yPos, width, height);
      Capturer.yPos += Capturer.clientHeight;
      self.scrollPage(self.tabId, 0, Capturer.clientHeight);
    };
  }

  blockImg.src = img;
});

Зачем ставить пустое изображение на холсте? И как получается скриншот? Спасибо за ваше время и опыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...