我在使用 CanvasRenderingContext2D.filter 保存照片时遇到问题。当我连接到视频并尝试在没有任何滤镜的情况下拍摄时,它会正常保存。但是,在画布上添加了一些过滤器后,它会保存为 HTM 文件或返回以前没有过滤器的照片(如果已制作)。奇怪的是,当通过单击手动下载该屏幕截图时,它确实有自己的 toDataUrl,正常下载并包含过滤器,但在使用 toDataUrl 保存时,它仍然看不到该图片。我应该怎么做才能使用这些滤镜保存照片?
这是我的一段代码:
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var video = document.getElementById("video");
document.getElementById("snapshot").addEventListener("click", function() {
if ($('video').hasClass('blur')) {
context.filter ="blur(2px)";
}
else {
context.filter= "";
}
context.drawImage(video, 0, 0);
});
document.getElementById("download").addEventListener("click", function() {
download.href = canvas.toDataURL("image/jpeg");
};
.blur {
-webkit-filter: blur(3px);
-moz-filter: blur(3px);
-ms-filter: blur(3px);
-o-filter: blur(3px);
filter: blur(3px);
}
<video id="video" autoplay></video>
<canvas id="canvas"></canvas>
<button id="download" download="picture" href=""></button>