gpt4 book ai didi

javascript - Canvas - 背景图像代替色度图像下的透明背景

转载 作者:行者123 更新时间:2023-12-03 02:39:37 25 4
gpt4 key购买 nike

我需要用我自己的背景图像(x,y 定位)替换绿色背景。

此时我刚刚从 https://s14.postimg.org/x9hmont5d/image.jpg 中删除了绿色背景使用 Seriously.js 库。

https://jsfiddle.net/0xz7cfkL/

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<style>
#canvas {
border: 2px solid #000;
}
</style>
</head>
<body>
<canvas width="800" id="canvas" height="600"></canvas>

<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/seriously.js"></script>
<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/effects/seriously.chroma.js"></script>
<script>
let image = new Image();
image.crossOrigin = 'anonymous';
image.src = 'https://s14.postimg.org/x9hmont5d/image.jpg';

let seriously = new Seriously();
let canvas = seriously.target('#canvas');

let chroma = seriously.effect('chroma');
chroma.source = seriously.source(image);

canvas.source = chroma;

seriously.go();
</script>
</body>
</html>

最佳答案

查看 SeriouslyJS 库,可以使用 Blend-plugin 添加背景图像。您需要将其包含在色度脚本标签旁边:

<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/effects/seriously.blend.js"></script>

在主脚本中,您可以按照与第一个脚本相同的方式添加背景图像:

let bgImage = new Image();
bgImage.crossOrigin = 'anonymous';
bgImage.src = 'https://picsum.photos/800/600?random';

最后,替换“canvas.source”:

let blend = seriously.effect('blend');
blend.top = chroma;
blend.bottom = seriously.source(bgImage);

canvas.source = blend;

我希望我没有错过什么。您可以查看并运行代码片段中的整个脚本:

let image = new Image();
image.crossOrigin = 'anonymous';
image.src = 'https://s14.postimg.org/x9hmont5d/image.jpg';
let bgImage = new Image();
bgImage.crossOrigin = 'anonymous';
bgImage.src = 'https://picsum.photos/800/600?random';

let seriously = new Seriously();
let canvas = seriously.target('#canvas');

let chroma = seriously.effect('chroma');
chroma.source = seriously.source(image);

let blend = seriously.effect('blend');
blend.top = chroma;
blend.bottom = seriously.source(bgImage);

canvas.source = blend;

seriously.go();
<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">

<style>
#canvas {
border: 2px solid #000;
}
</style>

</head>

<body>
<canvas width="800" id="canvas" height="600"></canvas>

<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/seriously.js"></script>
<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/effects/seriously.chroma.js"></script>
<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/effects/seriously.blend.js"></script>

</body>

</html>

另一种解决方案可以使用 HTML 和 CSS 将图像定位在 Canvas 后面的 z 索引处。 (如果第一个不起作用,我会使用这个)

let image = new Image();
image.crossOrigin = 'anonymous';
image.src = 'https://s14.postimg.org/x9hmont5d/image.jpg';

let seriously = new Seriously();
let canvas = seriously.target('#canvas');

let chroma = seriously.effect('chroma');
chroma.source = seriously.source(image);

canvas.source = chroma;

seriously.go();
#container {
position: relative;
}

#myBg {
position: absolute;
padding: 2px;
z-index: 1;
}

#canvas {
border: 2px solid #000;
position: absolute;
z-index: 2;
}
<html>

<body>

<div id="container">

<img src="https://picsum.photos/800/600?random" id="myBg" />
<canvas width="800" id="canvas" height="600"></canvas>

</div>

<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/seriously.js"></script>
<script src="https://cdn.jsdelivr.net/gh/brianchirls/Seriously.js@r2015-09-08/effects/seriously.chroma.js"></script>


</body>

</html>

关于javascript - Canvas - 背景图像代替色度图像下的透明背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com