是否可以在 JavaScript 中使用创建的图像设置背景图像?
Is it possible to set backgroundImage with created image in JavaScript?
我想用 JavaScript 创建的图像设置 canvas 的背景,而不是简单的 URL。
<script>
var v = document.getElementById("video1");
var canvas1 = document.getElementById("firstcanvas");
var ctx1 = canvas1.getContext("2d");
var canvas2 = document.getElementById("secondCanvas");
var ctx2 = canvas2.getContext("2d");
var i;
function draw() {
ctx1.drawImage(v, 0, 0, 300, 150);
transform();
}
function transform() {
var dataURL = canvas1.toDataURL("image/png");
canvas2.style.backgroundImage = dataURL;
}
v.addEventListener("play", function() {i = window.setInterval("draw()", 200);}, false);
v.addEventListener("pause", function() {window.clearInterval(i);}, false);
v.addEventListener("ended", function() {window.clearInterval(i);}, false);
</script>
简单地说,这段代码:1. 使用 drawImage 将视频中的帧连续绘制到 canvas,然后 2. 使用数据 [=21] 将 canvas 转换为实际图像=], 3. 图像将被设置为最终canvas的BACKGROUND。正如您可能已经猜到的那样,最后一部分不起作用。我只是一个工作代码,用于设置没有 URL 的背景图像,最好使用我提供的格式。谢谢。
您不能简单地将 .toDataURL() 返回的数据分配给 backgroundImage 属性,因为它希望它被包裹在 "url()".
这是一个例子:
var canvas1 = document.getElementById("firstCanvas");
var ctx1 = canvas1.getContext("2d");
var canvas2 = document.getElementById("secondCanvas");
var ctx2 = canvas2.getContext("2d");
ctx1.beginPath();
ctx1.arc(50, 50, 40, 0, 2 * Math.PI);
ctx1.stroke();
function transform() {
var dataURL = canvas1.toDataURL("image/png");
canvas2.style.backgroundImage = "url(" + dataURL + ")";
}
transform();
<canvas id="firstCanvas" width="100" height="100"></canvas>
<canvas id="secondCanvas" width="100" height="100"></canvas>
我想用 JavaScript 创建的图像设置 canvas 的背景,而不是简单的 URL。
<script>
var v = document.getElementById("video1");
var canvas1 = document.getElementById("firstcanvas");
var ctx1 = canvas1.getContext("2d");
var canvas2 = document.getElementById("secondCanvas");
var ctx2 = canvas2.getContext("2d");
var i;
function draw() {
ctx1.drawImage(v, 0, 0, 300, 150);
transform();
}
function transform() {
var dataURL = canvas1.toDataURL("image/png");
canvas2.style.backgroundImage = dataURL;
}
v.addEventListener("play", function() {i = window.setInterval("draw()", 200);}, false);
v.addEventListener("pause", function() {window.clearInterval(i);}, false);
v.addEventListener("ended", function() {window.clearInterval(i);}, false);
</script>
简单地说,这段代码:1. 使用 drawImage 将视频中的帧连续绘制到 canvas,然后 2. 使用数据 [=21] 将 canvas 转换为实际图像=], 3. 图像将被设置为最终canvas的BACKGROUND。正如您可能已经猜到的那样,最后一部分不起作用。我只是一个工作代码,用于设置没有 URL 的背景图像,最好使用我提供的格式。谢谢。
您不能简单地将 .toDataURL() 返回的数据分配给 backgroundImage 属性,因为它希望它被包裹在 "url()".
这是一个例子:
var canvas1 = document.getElementById("firstCanvas");
var ctx1 = canvas1.getContext("2d");
var canvas2 = document.getElementById("secondCanvas");
var ctx2 = canvas2.getContext("2d");
ctx1.beginPath();
ctx1.arc(50, 50, 40, 0, 2 * Math.PI);
ctx1.stroke();
function transform() {
var dataURL = canvas1.toDataURL("image/png");
canvas2.style.backgroundImage = "url(" + dataURL + ")";
}
transform();
<canvas id="firstCanvas" width="100" height="100"></canvas>
<canvas id="secondCanvas" width="100" height="100"></canvas>