当前位置: 代码网 > it编程>网页制作>html5 > 如何用JavaScript高效生成基于ECharts图表的高清视频或GIF动画?

如何用JavaScript高效生成基于ECharts图表的高清视频或GIF动画?

2025年03月30日 html5 我要评论
基于echarts图表生成高清晰度视频的方法本文将探讨如何将基于echarts生成的动态图表(例如支持动态排序的柱状图)转化为高清晰度的视频。直接使用屏幕录制软件往往会造成视频清晰度不足的问题,而ec

基于echarts图表生成高清晰度视频的方法

本文将探讨如何将基于echarts生成的动态图表(例如支持动态排序的柱状图)转化为高清晰度的视频。直接使用屏幕录制软件往往会造成视频清晰度不足的问题,而echarts使用canvas或svg渲染,这为我们提供了提升清晰度的机会。

问题在于如何利用echarts的canvas渲染特性直接生成视频,而不是依赖屏幕录制。解决方法是使用javascript库来实现视频录制功能。

一种方法是使用recordrtc.js插件。该插件结合html2canvas,可以将canvas内容录制成视频。 需要引入recordrtc.js和html2canvas.js这两个插件。以下代码片段展示了如何使用recordrtc.js将echarts图表录制成mp4视频:

<!doctype html>
<html lang="cmn-hans">

<head>
    <meta charset="utf-8">
    <meta http-equiv=x-ua-compatible content="ie=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <title>echarts to video</title>
    <style>
        html,body,#mycanvas{
            height: 100%;
            width: 100%;
            padding: 0;
            margin: 0;
        }
    </style>
</head>

<body>
    <div id="mycanvas"></div>
    <script type="text/javascript" src="https://cdn.bootcss.com/echarts/4.7.0/echarts-en.min.js"></script>
    <script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/recordrtc/5.5.9/recordrtc.js"></script>
    <script src="https://cdn.bootcss.com/filesaver.js/1.3.8/filesaver.min.js"></script>
    <script>
        let $parent = document.getelementbyid('mycanvas')
        let mychart = echarts.init($parent);
        //这里的option就是echrts案例中的option,代码太多,就不贴了
        mychart.setoption(option);
        
        settimeout(function(){
            //开始录制
            exporttovideo(5000)
        },500)
        
        function exporttovideo(time){
            //time 为录制时长 毫秒
            time = time || 0
            
            let $canvas = document.queryselector('#mycanvas canvas')
            
            var recordrtc = recordrtc($canvas, {
                type: 'canvas'
            });
            //开始录制
            recordrtc.startrecording();
            
            settimeout(function(){
                //录制结束
                recordrtc.stoprecording(function(videourl) {
                    console.log(videourl)
                
                    var recordedblob = recordrtc.getblob();
                    //recordrtc.getdataurl(function(dataurl) { });
                    saveas(recordedblob, "test.mp4");
                });
            }, time)
        }
    </script>
</body>

</html>
登录后复制

如果需要生成gif动画,可以使用gif.js插件。 需要引入gif.js插件。代码片段如下:

<!doctype html>
<html lang="cmn-hans">

<head>
    <meta charset="utf-8">
    <meta http-equiv=x-ua-compatible content="ie=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <title>echarts to gif</title>
    <style>
        html,body,#mycanvas{
            height: 100%;
            width: 100%;
            padding: 0;
            margin: 0;
        }
    </style>
</head>

<body>
    <div id="mycanvas"></div>
    <script type="text/javascript" src="https://cdn.bootcss.com/echarts/4.7.0/echarts-en.min.js"></script>
    <script type="text/javascript" src="https://cdn.bootcss.com/gif.js/0.2.0/gif.js"></script>
    <script src="https://cdn.bootcss.com/filesaver.js/1.3.8/filesaver.min.js"></script>
    <script>
        let $parent = document.getelementbyid('mycanvas')
        let mychart = echarts.init($parent);

        //这里的option就是echrts案例中的option,代码太多,就不贴了
        mychart.setoption( option );
        
        settimeout(function(){
            //开始录制gif
            exporttogif(5000)
        }, 20)
        
        function exporttogif(time){
            var start = date.now()
            //time 为录制时长 毫秒
            time = time || 0
            
            let $canvas = document.queryselector('#mycanvas canvas')
            
            function loop(){
                window.requestanimationframe(function(){
                    gif.addframe($canvas, {delay: 100});
                    if(date.now() - start >= time){
                        gif.render();
                    }else{
                        loop()
                    }
                })
            }
            
            var gif = new gif({
              workers: 2,
              quality: 10
            });
            
            gif.on('finished', function(blob) {
                  saveas(blob, "test.gif");
            });
            
            loop()
        }
    </script>
</body>

</html>
登录后复制

这些代码片段展示了如何使用相应的javascript库来录制视频或gif,从而避免了屏幕录制带来的清晰度问题。 记住,需要根据实际情况调整录制时长以及gif的帧率和质量参数。

以上就是如何用javascript高效生成基于echarts图表的高清视频或gif动画?的详细内容,更多请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com