canvas上加CSS3滤镜,虽然出现的效果,但是保存的图片并没有把滤镜加上去,有什么好的解决方案吗?

我的目的在canvas上加一些滤镜效果并把它保存下来,我想到用CSS3的滤镜,比起操作像素点,CSS3方便了很多,但是保存图片的时候出现了问题,加上的滤镜并没有保存下来,我试着把加有滤镜的canvas画到canvas也没有效果。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>css3_demo</title>
    <style>
    canvas { border: 1px solid #aaa;}
    #canvas1 { -webkit-filter: blur(5px); filter: blur(5px); }
    </style>
</head>
<body>
    <canvas id="canvas1" width="500" height="500"></canvas>
    <canvas id="canvas2" width="500" height="500"></canvas>    
    <script>
    var canvas1 = document.getElementById('canvas1');
    var canvas2 = document.getElementById('canvas2');
    var cxt1 = canvas1.getContext('2d');
    var cxt2 = canvas2.getContext('2d');

    var img = new Image();
    img.src = '1.jpg';
    img.onload = function(){
        cxt1.drawImage(img,0,0,500,500);
        cxt2.drawImage(canvas1,0,0,400,400);
    }

    </script>
</body>
</html>

clipboard.png

我的问题就是:有没有什么办法可以把CSS3滤镜加上去,能用CSS3最好,用不了的话那也只能操作像素点了

阅读 6.3k
3 个回答

硬要往这方面想的话,我觉得可以先把canvas的内容生成图片,然后让css3滤镜作用在这图片上,然后再利用html2canvas这个库将图片转回canvas,此时canvas已经是带上滤镜效果的了,这时你再保存为图片就可以了

仅仅是需要给模糊的话,做一张半透明的图片,将这个图片绘制在canvas最上面即可!canvas的模糊效果,有现成的插件StackBlur.js,可以试试

新手上路,请多包涵

想问一下这个问题解决了吗?遇到同样的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题