谷歌浏览器上的画布错误剪辑

Posted

技术标签:

【中文标题】谷歌浏览器上的画布错误剪辑【英文标题】:Canvas wrong clipping on Google Chrome 【发布时间】:2016-04-25 09:29:38 【问题描述】:

我正在尝试使用 javascript 剪辑画布,它在 Mozilla Firefox 中可以正常工作,但在 google Chrome 上出现渲染错误(不一样)。我该如何解决?还是我做错了什么?

这是我的代码:https://jsfiddle.net/xranto/hmrx52nv/

JS:

var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');

var img = document.createElement('IMG');

img.onload = function () 
    ctx.save();                             
    ctx.beginPath();
    ctx.moveTo(31, 145);
    ctx.lineTo(206, 200);
    ctx.lineTo(303, 57);
    ctx.lineTo(469, 378);
    ctx.lineTo(133, 538);
    ctx.closePath();                
    ctx.clip();                     
    ctx.drawImage(img, 0, 0);                               
    ctx.restore();



img.src = "http://i.imgur.com/fHaQvTc.jpg";

html

<canvas id="c"  ></canvas>

Rendering comparison

Mozilla 版本:43.0.1 - Chrome 版本:50.0.2661.87 m

【问题讨论】:

那么,你得到了什么结果,它应该是什么样子? 适用于我的 Chrome 版本 26.0.1410.63 结果在这里:[i.stack.imgur.com/qNUot.jpg] @RolandStarke chrome 26 ???它已经 3 岁了,您应该考虑更新您的浏览器。但也适用于 v50、osX。 OP,你能告诉我们你使用的是哪个版本吗? here here here 和 here 周围有一些错误报告;可能是相关的。 【参考方案1】:

问题解决了,

而不是:

ctx.closePath();                
ctx.clip();                     
ctx.drawImage(img, 0, 0);                               
ctx.restore();

我用:

ctx.closePath();                
ctx.fill();     
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(img,0, 0);

谢谢大家!!!

【讨论】:

以上是关于谷歌浏览器上的画布错误剪辑的主要内容,如果未能解决你的问题,请参考以下文章

多浏览器上的 SVG 剪辑

Fabric.js 画布上的多个剪切区域

谷歌地图显示错误 Api 项目未授权

如何使用 CSS 剪辑路径剪辑画布?

怎么取消电脑谷歌浏览器上的企业认证

为啥我家的谷歌浏览器上的字模糊不清?字不小,但是模糊。