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)
Как избежать мутации изображения ??