Изменение размера холста динамически генерирует пустой холст - PullRequest
0 голосов
/ 06 июля 2018

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

Только для одного изображения это работает отлично. Если у меня есть более одного изображения, холст будет пустым.

this.imageWidth дает мне ширину 1-го изображения), а this.heightCanvas дает мне общую высоту всех изображений.

Потому что я хочу разместить все изображения в вертикальном ряду.

HTML

<div id="canvasWrapper"></div>

JS

  startCanvas() {
  var canvasExists = document.getElementById('ocrCanvas');

  if (canvasExists != null) {
    alert(canvasExists);
    var myNode = document.getElementById("canvasWrapper");
    while (myNode.firstChild) {
        myNode.removeChild(myNode.firstChild);
    }
  }
  var canv = document.createElement('canvas');
  canv.id = 'ocrCanvas';
  document.getElementById('canvasWrapper').appendChild(canv); // adds the canvas to #someBox

  const getContext = () => document.getElementById('ocrCanvas').getContext('2d');
  const ctx = getContext();
  ctx.canvas.width  = this.imageWidth;
  ctx.canvas.height = this.heightCanvas;

  console.log('ctx width' + ctx.canvas.width)
  console.log('ctx height' + ctx.canvas.height)

  this.fillCanvas();

}

fillCanvas() {
const getContext = () => document.getElementById('ocrCanvas').getContext('2d');

const loadImage = url => {
  return new Promise((resolve, reject) => {
    const img = new Image();
    img.onload = () => resolve(img);
    img.onerror = () => reject(new Error(`load ${url} fail`));
    img.src = url;
  });
};

const depict = options => {
  const ctx = getContext();
  ctx.canvas.width  = this.imageWidth;
  ctx.canvas.height = this.heightCanvas;

  console.log('ctx width' + ctx.canvas.width)
  console.log('ctx height' + ctx.canvas.height)

  const myOptions = Object.assign({}, options);
  return loadImage(myOptions.src).then(img => {

    ctx.drawImage(img, myOptions.x, myOptions.y);
  });
};

const imgs = this.base64Canvas;
imgs.forEach(depict);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...