Как скопировать содержимое одного холста на другой холст - PullRequest
0 голосов
/ 28 мая 2018

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

framework2-debug.js:1876 TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'

Я не могу получить то, чтонеправильно в моем коде, кто-нибудь может мне помочь в этом?

                var c = $("#imgCanvas");
                var ctx = c[0].getContext("2d");
                var img = $(this).find('canvas');
                ctx.drawImage(img, 10, 10);

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Хитрость в том, чтобы нарисовать элемент первого холста как изображение на втором холсте.

var img = new Image();
var c = document.getElementById('imgCanvas').getContext('2d');
var c2 = document.getElementById('imgCanvas2').getContext('2d');

img.onload = function() {
  c.drawImage(img, 0, 0);

  // HERE THE TRICK, Draw element as Image
  c2.drawImage(document.getElementById('imgCanvas'), 0, 0);

}

img.src = 'https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png';
canvas {
  position:relative;
  width:48%;
  height:auto;
  float:left;
}
<canvas id="imgCanvas"></canvas>

<canvas id="imgCanvas2"></canvas>
0 голосов
/ 28 мая 2018

Вы ошиблись. ctx.drawImage не принимает элемент jQuery в качестве параметра.

var img = $(this).find('canvas').get(0);

или

var img = this.querySelector('canvas');

или вы можете использовать getImageData и putImageData методы контекста холста:

var imgData = oldCanvas.getContext('2d').getImageData(0, 0, 100, 100);
newCanvas.getContext('2d').putImageData(imgData, 0, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...