在HTML5画布中将图像裁剪为椭圆形
Cropping Image to Oval in HTML5 Canvas
我一直在尝试使用创建另一个画布、剪裁、保存然后将图像绘制到主画布上的方法将图像裁剪为椭圆形。然而,它只显示黑色椭圆形,而没有覆盖在顶部的图像
var Ctx = document.getElementById('canvas').getContext('2d');
var tCan = document.createElement('canvas');
var tCtx = tCan.getContext('2d');
tCtx.beginPath();
var centerX = 50;
var centerY = 50;
var width = 100;
var height = 100;
tCtx.moveTo(centerX, centerY - height/2);
tCtx.bezierCurveTo(
centerX + width/2, centerY - height/2,
centerX + width/2, centerY + height/2,
centerX, centerY + height/2);
tCtx.bezierCurveTo(
centerX - width/2, centerY + height/2,
centerX - width/2, centerY - height/2,
centerX, centerY - height/2);
tCtx.fillStyle = "black";
tCtx.fill();
tCtx.closePath();
var img = new Image();
img.onload = function(){
tCtx.drawImage(img,1,1, 98, 98);
};
img.src = 'http://imgur.com/GvRewu7.png';
tCtx.clip();
var cSi = tCan.toDataURL();
var cImg = new Image();
cImg.src = cSi;
Ctx.drawImage(cImg,0,0);
为什么这还不包括裁剪的图像?有没有其他方法可以做到这一点(完全用javascript)?
编辑:我的活动JSBin页面:https://jsbin.com/yulituc/edit?js,输出
jsFiddle:https://jsfiddle.net/mdofqjx2/3/
您尚未将新的canvas
元素附加到页面中。我已经在下面为您修复了它
HTML:
<canvas id="canvas" width="400" height="400">
</canvas>
<canvas id="canvas2" width="400" height="400">
</canvas>
Javascript:
var Ctx = document.getElementById('canvas').getContext('2d');
var tCan = document.getElementById('canvas2');
var tCtx = tCan.getContext('2d');
tCtx.beginPath();
var centerX = 50;
var centerY = 50;
var width = 100;
var height = 100;
tCtx.moveTo(centerX, centerY - height/2);
tCtx.bezierCurveTo(
centerX + width/2, centerY - height/2,
centerX + width/2, centerY + height/2,
centerX, centerY + height/2);
tCtx.bezierCurveTo(
centerX - width/2, centerY + height/2,
centerX - width/2, centerY - height/2,
centerX, centerY - height/2);
tCtx.fillStyle = "black";
tCtx.fill();
tCtx.closePath();
var img = new Image();
img.onload = function(){
tCtx.drawImage(img,1,1, 98, 98);
};
img.src = 'http://imgur.com/GvRewu7.png';
tCtx.clip();
var cSi = tCan.toDataURL();
通过椭圆裁剪图像的简单方法
jsFiddle:https://jsfiddle.net/mdofqjx2/1/
您可以创建一条路径,然后绘制一个圆。如果你想画一个椭圆形,只需修改比例ctx.scale
var c = document.getElementById('myCanvas');
var ctx = c.getContext("2d");
var img = new Image();
img.src = "https://pbs.twimg.com/profile_images/378800000532546226/dbe5f0727b69487016ffd67a6689e75a.jpeg";
img.onload = function()
{
ctx.fillRect(0,0,c.width,c.height);
ctx.save();
ctx.scale(2,1);
ctx.beginPath();
ctx.arc(150, 150, 150, 0, Math.PI * 2, true);
ctx.closePath();
ctx.clip();
ctx.scale(0.5,1);
ctx.drawImage(img, 0, 0);
ctx.restore();
}
相关文章:
- 以一定宽度裁剪跨度
- 使用Jcrop和Pixastic进行裁剪
- Jcrop&画布:裁剪区域的大小很奇怪;500内部服务器错误
- 如何从缩放的图像裁剪并保持原始图像的纵横比
- Facebook JS SDK 发布的照片被裁剪
- JavaScript裁剪(裁剪)的图像质量差
- 如何使用画布和动态.js裁剪图像
- 动态加载图像后应用图像居中和裁剪
- 如何使用Javascript图像裁剪器“Croppie”保存
- jQuery:裁剪以删除图像数据并替换为新数据
- 如何使用jquery裁剪插件最小化请求的图像
- 如果图像太大,如何裁剪图像
- 在客户端调整图像大小/裁剪图像的最佳方式是什么
- 自动将HTML5画布裁剪为内容
- 让用户手动裁剪特定大小的图像作为输出
- 如何使用jcrop裁剪不同大小的图像
- jquery裁剪图像selction未返回结果
- Jquery裁剪图像
- 在将图像作为原始图像二进制数据(png或jpeg)上传到服务器之前,裁剪或调整图像大小
- 在HTML5画布中将图像裁剪为椭圆形