首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用多个圆弧从图像中裁剪圆

使用多个圆弧从图像中裁剪圆
EN

Stack Overflow用户
提问于 2018-06-03 01:14:03
回答 1查看 32关注 0票数 1

我试着从两张图片中裁剪出一个圆圈,并将它们并排放置,如下所示:

代码语言:javascript
复制
const ctx = $('#canvas')[0].getContext("2d");

const image = new Image();
image.onload = () => {
        const coords = [[115, 62.5], [495, 62.5]];
        const coords2 = [[65, 12.5] , [445, 12.5]];

        for(let i = 0; i < coords.length; i++) {
            ctx.beginPath();
            ctx.arc(coords[i][0], coords[i][1], 50, 0, Math.PI * 2, true);
            ctx.clip();
            ctx.drawImage(image, coords2[i][0], coords2[i][1], 100, 100);

        }
    };
image.src = 'https://placeholdit.imgix.net/~text?txtsize=50&w=700&h=250&bg=afeafe';
代码语言:javascript
复制
#canvas {
    border:1px solid grey;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<canvas id="canvas" width="800" height="200"></canvas>

然而,这只是裁剪其中一张图片,而另一张没有显示,我不明白为什么?

当我注释掉这几行时

代码语言:javascript
复制
ctx.beginPath();
ctx.arc(coords[i][0], coords[i][1], 50, 0, Math.PI * 2, true);
ctx.clip();

它正确地放置了2个图像,所以定位不是问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 02:04:13

通过在剪裁之前保存上下文,然后在剪裁后恢复它,修复了以下问题:

代码语言:javascript
复制
const ctx = $('#canvas')[0].getContext("2d");

const image = new Image();

image.onload = () => {
	const coords = [[115, 62.5], [495, 62.5]];
	const coords2 = [[65, 12.5] , [445, 12.5]]
	for(let i = 0; i < coords.length; i++) {
	    ctx.save();
	    ctx.beginPath();
	    ctx.arc(coords[i][0], coords[i][1], 50, 0, Math.PI * 2, true);
  	    ctx.closePath();
  	    ctx.clip();
  	    ctx.drawImage(image, coords2[i][0], coords2[i][1], 100, 100);
  	    ctx.restore();
	}
};

image.src = 'https://placeholdit.imgix.net/~text?txtsize=50&w=700&h=250&bg=afeafe';
代码语言:javascript
复制
#canvas {
    border:1px solid grey;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<canvas id="canvas" width="800" height="200"></canvas>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50659314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档