gpt4 book ai didi

javascript - 使用destination-over保存背景和实际草图

转载 作者:行者123 更新时间:2023-12-02 16:05:00 25 4
gpt4 key购买 nike

我已阅读 this和其他一些问题,很明显,我需要使用 destination-over 通过在旧图像上显示新图像来保存背景草图。 p>

我正在使用Sketch.JS 我的代码如下:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

$('#myCanvas').sketch({
defaultColor: "red"
});

$('#download').click(function() {
ctx.globalCompositeOperation = "destination-over";
img = new Image();
img.setAttribute('crossOrigin', 'anonymous');
img.src = 'http://lorempixel.com/400/200/';
ctx.drawImage(img, 0, 0);
$('#url').text(c.toDataURL('/image/png'));
window.open(c.toDataURL('/image/png'));
});
#myCanvas {
background: url(http://lorempixel.com/400/200/);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/intridea/sketch.js/gh-pages/lib/sketch.js"></script>
<canvas id="myCanvas"></canvas>
<input type='button' id='download' value='download'>
<span id='url'></span>

Fiddle

但这并没有帮助。单击“下载”仍然只会生成草图。现在,我似乎不明白如何正确使用 destination-overW3Schools似乎没有帮助。

有人能给我指出正确的方向吗?

最佳答案

假设您在包含背景的图像顶部有一个 SketchJS Canvas :

#wrapper{positon:relative;}
#bk,#myCanvas{position:absolute;}

<div id='wrapper'>
<img crossOrigin='anonymous' id=bk src='yourImage.png'>
<canvas id="myCanvas" width=500 height=300></canvas>
</div>

然后,当您想要将草图与背景组合并将其另存为图像时,您可以使用destination-over合成在现有草图“下方”绘制背景。

ctx.globalCompositeOperation='destination-over';
ctx.drawImage(bk, 0, 0);

这里是示例代码:

<!doctype html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://rawgit.com/intridea/sketch.js/gh-pages/lib/sketch.js"></script>
<style>
body{ background-color: ivory; }
#wrapper{positon:relative;}
#bk,#myCanvas{position:absolute;}
</style>
<script>
$(function(){

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

$('#myCanvas').sketch({ defaultColor: "red" });

$('#download').click(function() {
var img=document.getElementById('bk');
ctx.globalCompositeOperation='destination-over';
ctx.drawImage(bk, 0, 0);
ctx.globalCompositeOperation='source-over';
var html="<p>Right-click on image below and Save-Picture-As</p>";
html+="<img src='"+c.toDataURL()+"' alt='from canvas'/>";
var tab=window.open();
tab.document.write(html);
});

}); // end $(function(){});
</script>
</head>
<body>
<h4>Drag to sketch on the map.</h4>
<button id=download>Download</button>
<div id='wrapper'>
<img crossOrigin='anonymous' id=bk src='https://dl.dropboxusercontent.com/u/139992952/multple/googlemap1.png'>
<canvas id="myCanvas" width=459 height=459></canvas>
</div>
</body>
</html>

关于javascript - 使用destination-over保存背景和实际草图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854173/

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