首页 > 其他分享 >前端播放AE动画库 bodymovin.js的一些使用方法

前端播放AE动画库 bodymovin.js的一些使用方法

时间:2024-12-19 17:21:21浏览次数:5  
标签:canvas AE img base64 Canvas js file var bodymovin

加载动画

var animData = {
   wrapper: $("#ae_privewdiv")[0],
   animType: 'svg',
   loop: true,
   prerender: true,
   autoplay: true,
   path: src,
};
let anim = bodymovin.loadAnimation(animData);

 

一、获取动画总帧数、帧率、时长

//true 为获取总帧数
anim.getDuration(true)

//获取帧率
anim.frameRate
//false 为获取时长
anim.getDuration(false)

二、将AE动画转换成图片(或者生成一张缩略图)

1、将AE动画转换成svg

let path = 'data:image/svg+xml,' + encodeURIComponent(anim.renderer.svgElement.outerHTML);

 

2、用canvas来绘制svg,然后转换为base64显示图片

   // 创建一个用于绘制图像的Canvas元素
  var canvas = document.createElement('canvas');
  var ctx = canvas.getContext('2d');

  // 创建一个Image元素来加载SVG
  var img = new Image();
  img.onload = function() {
    // 设置Canvas的大小
    canvas.width = img.width;
    canvas.height = img.height;
    // 在Canvas上绘制SVG图像
    ctx.drawImage(img, 0, 0);
    // 将Canvas转换为图片
    let dataURL = canvas.toDataURL('image/png');

    var imageElement = document.createElement('img');     imageElement.src = dataURL;     document.body.appendChild(imageElement)   }

  img.src = path;

三、上传base64图片格式

1、用canvas获取base64

 // 创建一个用于绘制图像的Canvas元素
  var canvas = document.createElement('canvas');
  var ctx = canvas.getContext('2d');

  // 创建一个Image元素来加载SVG
  var img = new Image();
  img.onload = function() {
    // 设置Canvas的大小
    canvas.width = img.width;
    canvas.height = img.height;
    // 在Canvas上绘制SVG图像
    ctx.drawImage(img, 0, 0);
    // 将Canvas转换为图片
    let dataURL = canvas.toDataURL('image/png');
    //base64转file对象     dataURLtoFile(dataURL, '图片')
  }   img.src = path;

 

2、转换为file格式进行上传

//base64转file
function dataURLtoFile(dataURL, fileName) {
  // 将base64的数据部分提取出来
  const parts = dataURL.split(';base64,');
  const contentType = parts[0].split(':')[1];
  const raw = window.atob(parts[1]);
  const rawLength = raw.length;
  const uInt8Array = new Uint8Array(rawLength);
  for (let i = 0; i < rawLength; ++i) {
  uInt8Array[i] = raw.charCodeAt(i);
  }

  // 创建Blob对象
  const blob = new Blob([uInt8Array], { type: contentType });
  // 创建File对象
  const file = new File([blob], fileName, { type: contentType });
  return file;
}

 3、上传file文件

  // 创建FormData对象
      var formData = new FormData();
      // 将file对象添加到FormData中
      formData.append("file", file);
      
      $.ajax({
            url: url,
            type: 'post',
            data: formData,
            contentType : false, //文件上传时为false
            processData : false,  //文件上传时为false
        success: function (res) { }
    })

 

标签:canvas,AE,img,base64,Canvas,js,file,var,bodymovin
From: https://www.cnblogs.com/wangguihui/p/18617623

相关文章

  • React的使用笔记1 React 项目的创建与JSX基础知识
    时间久远,工作中没有遇到react的情况,早就忘记React怎么写了~回顾一下吧。React项目的搭建npxcreat-react-appapp-nameReact项目的运行具体可以参考README中的说明,没有特殊的情况下,直接npmstart删除项目src目录中不必要的代码先,仅保留入口文件即可,即App.js与index.j......
  • EasyPlayer.js视频流媒体播放器在React项目中应如何使用?
    H5流媒体播放器,作为基于HTML5技术的创新产品,近年来在音频和视频播放领域取得了显著的发展。它不仅为用户提供了流畅、稳定的播放体验,还通过丰富的交互功能增强了用户的参与感。那么在实际应用时,在React项目中应如何使用EasyPlayer播放器呢?1、在官网下载播放器压缩包。2、解压......
  • 基于Java+SSM+JSP宠物领养系统(源码+LW+调试文档+讲解等)/宠物领养平台/宠物领养网站/
    博主介绍......
  • 网页直播/点播播放器EasyPlayer.js如何在Vue3中使用?
    近来很多用户对何为Vue3产生了疑问,其实Vue3就是一个用于构建用户界面的渐进式JavaScript框架。Vue3于2020年发布带来了全新的CompositionAPI、改进的性能、TypeScript支持和更好的处理大型应用程序的能力。Vue3在保留了Vue2的易用性的同时,提供了更强大的功能,为开发者在实现复杂应......
  • Js 获取token 过期时间
    functiongetJwtExpiration(token){try{constbase64Url=token.split('.')[1];//提取payload部分constbase64=base64Url.replace(/-/g,'+').replace(/_/g,'/');//Base64Url转换为Base64constjsonPa......
  • JSP Session
    HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。有三种方法来维持客户端与服务器的会话:Cookies网络服务器可以指定一个唯一的sessionID作为cookie来代表每个客户端,用来识别这个客户端接下来的请......
  • JackJson的@JsonAutoDetect注解
    1、@JsonAutoDetect(作用在类上):自动检测fieldVisibility:字段的可见级别;getterVisibility:getter方法的可见级别;setterVisibility:setter方法的可见级别。ANY:任何级别的字段都可以自动识别NONE:任何字段都不可以自动识别NON_PRIVATE:非private修饰的字段可以自动识别PROTECTED_OR......
  • pdfjs 报错提示Failed to load module script
    参考文章:pdfjs报错提示Failedtoloadmodulescript[JavaScript]MIMEtype异常在服务器好不容易配好nginx转发,jar包,静态资源等,访问网站一切ok,结果打开pdf时,无法预览:F12看了下,接口返回正常啊,说明接口没问题,接着看控制台,oh,问题在这:Failedtoloadmodulescript:Expecte......
  • JS中把其它类型转成字符串的方法及规则是什么?
    在JavaScript中,有多种方法可以将其他类型转换为字符串。以下是一些常见的方法和规则:使用toString()方法:几乎所有的JavaScript对象都继承了toString()方法,该方法返回一个表示该对象的字符串。对于原始类型(如Number和Boolean),此方法会返回原始值的文本表示形式。对于数组和对象,默......
  • JS中把其它类型转成数字的方法及规则是什么?
    在JavaScript中,可以使用多种方式将其他类型转换为数字。以下是一些常见的方法和规则:Number()函数:Number()函数可以用来将任何类型的数据转换为数字。其规则如下:如果参数是布尔值,true转换为1,false转换为0。如果参数是数字,则返回该数字(无转换)。如果参数是null,返回0......