слишком много рисовать одно и то же изображение - PullRequest
0 голосов
/ 03 мая 2020

index. html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            background-color: blue;
        }
        canvas {
           width: 500px;
        }
    </style>
</head>
<body>
    <canvas id='canvas'></canvas>
    <button onclick="drawMask()" >click</button>
    <script src="./index.js"  ></script>
</body>
</html>

/ index. js

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
ctx.imageSmoothingQuality = "high";
const mask = new Image();

mask.onload = function () {
    canvas.width = mask.naturalWidth;
    canvas.height = mask.naturalHeight;
    ctx.drawImage(mask, 0, 0);
}
mask.src = 'https://i.ibb.co/61qpVnB/test.png';

function drawMask() {
    // I try with ctx.globalCompositeOperation = 'copy' it works but i need ->
    // -> ctx.globalCompositeOperation = 'source-over'; to merge with existing canvas content
    ctx.drawImage(mask, 0, 0);
}

есть ссылка https://jsfiddle.net/mikayelabrahamyan/e42bdozv/17/ plaice Нажмите на кнопку, чтобы Посмотрите, как изменить изображение.

Я пытаюсь с помощью ctx.globalCompositeOperation = 'copy', это работает, но мне нужно объединиться с существующим содержимым холста, используя source-over (по умолчанию globalCompositeOperation)

Как избежать мутации изображения ??

...