位置: IT常识 - 正文

前端直接生成GIF动态图实践(前端生成docx)

编辑:rootadmin
前端直接生成GIF动态图实践 前言

推荐整理分享前端直接生成GIF动态图实践(前端生成docx),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端生成图片并下载,快速生成前端页面,前端生成图片,前端生成guid,前端动态生成表格,前端生成工具,前端动态生成表格,前端生成图片,内容如对您有帮助,希望把文章链接给更多的朋友!

去年在博客中发了两篇关于GIF动态生成的博客,GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探,在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问,有没有不使用Java,甚至不依赖于后台的,直接基于前端的GIF动图生成,有没有这种技术方案。博主个人对前端不是很擅长,后来也是在github上自习搜索了一番,发现了一个比较有意思的,可以直接在前端使用的gif动态图生成组件。本文重点聊聊gif.js组件,介绍一下gif这个组件的基本原理,在生产中如何进行使用。

一、GIF.JS简介1、gif.js是什么

gif.js在github的地址是:gif.js,打开它的官方网站,可以看到如下的介绍:

作为一款成熟的插件,在github上有4.5k的star,足以说明它的受欢迎程度。而且gif.js采用的是宽松的MIT协议,您可以随意下载这个插件,再此基础之上改造成自己的工具供别人使用。使用git clone将工程下载到本地后,可以看到gif.js的初始目录。

2、gif.js基础依赖

打开工程目录的package.json文件,这里定义了文件基础依赖。打开后可以看到如下的定义信息:

{"name": "gif.js","version": "0.2.0","description": "JavaScript GIF encoding library","author": "Johan Nordberg <code@johan-nordberg.com>","main": "index.js","repository": "https://github.com/jnordberg/gif.js.git","devDependencies": {"browserify": "^13.1.1","coffeeify": "^2.1.0","exorcist": "^0.4.0","uglify-js": "^2.7.5"},"scripts": {"prepublish": "./bin/build"},"browser": "./dist/gif.js","keywords": ["gif","animation","encoder"],"license": "MIT","readmeFilename": "README.md"}3、关键基础类解析

在GIFEncoder.js文件中定义了gif.js对象了基本一些属性,在上面的目录中打开目标文件后,可以看到属性定义方法:

核心方法API说明:您可以使用构造方法或者使用setOptions()方法类设置相关的属性。详情可以看下面的说明:

Name

Default

Description

repeat

0

repeat count, -1 = no repeat, 0 = forever

quality

10

pixel sample interval, lower is better

workers

2

number of web workers to spawn

workerScript

gif.worker.js

url to load worker script from

background

#fff

前端直接生成GIF动态图实践(前端生成docx)

background color where source image is transparent

width

null

output image width

height

null

output image height

transparent

null

transparent hex color, 0x00FF00 = green

dither

false

dithering method, e.g. FloydSteinberg-serpentine

debug

false

whether to print debug information to console

二、gif.js实战

下面采用具体的代码进行一个实际例子的实践。

1、新建html工程

这里以video2.html为例,在这个工程中引入了gif.js和gif.worker.js。工程目录如下,Jquery.js作为非必须依赖。

<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>视频转GIF</title><meta name="description" content="Full-featured JavaScript GIF encoder that runs in your browser."><meta name="keywords" content="gif, encoder, animation, browser, unicorn"><meta name="viewport" content="width=device-width"><meta property="og:title" content="gif.js"><meta property="og:url" content="http://jnordberg.github.io/gif.js"><meta property="og:description" content="Full-featured JavaScript GIF encoder that runs in your browser."><meta property="og:type" content="website"><link rel="stylesheet" href="main.css"><script src="gif.js?v=3"></script><script src="video.js?v=3"></script></head>2、定义gif对象gif = new GIF({workers: 4,workerScript: 'gif.worker.js',width: 600,height: 337});

定义好了gif对象之后,还需要定义相应的响应事件,如下代码所示:

sample.addEvent('change', sampleUpdate);button.addEvent('click', function() {video.pause();video.currentTime = 0;gif.abort();gif.frames = [];return video.play();});gif.on('start', function() {return startTime = now();});gif.on('progress', function(p) {return info.set('text', "rendering: " + (Math.round(p * 100)) + "%");});gif.on('finished', function(blob) {var delta, img;img = document.id('result');img.src = URL.createObjectURL(blob);delta = now() - startTime;console.log("done in\n" + ((delta / 1000).toFixed(2)) + "sec,\nsize " + ((blob.size / 1000).toFixed(2)) + "kb");return info.set('text', "done in\n" + ((delta / 1000).toFixed(2)) + "sec,\nsize " + ((blob.size / 1000).toFixed(2)) + "kb");});

代码有点长,这里不一一列出,需要源代码的可以私信。

3、最后效果

使用nginx进行静态发布后,可以看到如下的效果:

点击执行按钮后,在网页下面生成gif动态图,如下所示:

实际生成的动态图会根据原始视频的大小,画质质量,清晰度等因素影响,执行时间也会有影响。在实际项目中需要根据需要调整相应的参数才可以。

4、执行分析

以完成后渲染动图为例讲解合成过程,

可以在变量区看到客户端开启了多个Worker进行并行处理。

在这里进行数据合并处理,如下:

最终合成gif图片,在html中进行dom渲染。

三、总结

以上就是本文的主要内容,本文重点介绍了一款前端基于Javascript的gif.js生成插件,分析了它的源码结构,最后通过一个实例进行了案例讲解,帮您快速的了解和掌握这个组件,文章行文仓促,如有错误,请留言交流。

本文链接地址:https://www.jiuchutong.com/zhishi/297416.html 转载请保留说明!

上一篇:npm install或npm i后没有依赖包node_modules?

下一篇:CSS页面布局(超详解)(div css页面布局)

  • 抖音访客记录怎么看(抖音访客记录怎么没有显示时间了)

    抖音访客记录怎么看(抖音访客记录怎么没有显示时间了)

  • 不想接电话怎么设置空号(不想接电话怎么设置停机)

    不想接电话怎么设置空号(不想接电话怎么设置停机)

  • qq群一起听歌如何设置(qq群一起听歌怎么开启权限)

    qq群一起听歌如何设置(qq群一起听歌怎么开启权限)

  • 帮上热门对方有提示吗(帮上热门 对方知道)

    帮上热门对方有提示吗(帮上热门 对方知道)

  • 华为能分屏吗(华为能够分屏吗)

    华为能分屏吗(华为能够分屏吗)

  • 红米k30pro充电器多少瓦(红米k30pro充电器多少w)

    红米k30pro充电器多少瓦(红米k30pro充电器多少w)

  • vivo手机图标怎么改成自定义图标(vivo手机图标怎么隐藏)

    vivo手机图标怎么改成自定义图标(vivo手机图标怎么隐藏)

  • cache属不属于内存储器(cache属于ram吗)

    cache属不属于内存储器(cache属于ram吗)

  • qq情侣空间被解除有提示吗(qq情侣空间被解绑怎么办)

    qq情侣空间被解除有提示吗(qq情侣空间被解绑怎么办)

  • 小米手环适用于苹果吗(小米手环能用来干嘛)

    小米手环适用于苹果吗(小米手环能用来干嘛)

  • oppor11怎么恢复闪充(oppor11怎么恢复照片)

    oppor11怎么恢复闪充(oppor11怎么恢复照片)

  • 三星s8突然不能快充了(三星s8手机不能开机是什么原因)

    三星s8突然不能快充了(三星s8手机不能开机是什么原因)

  • 电脑怎么下载excel表格软件(电脑怎么下载EXCL)

    电脑怎么下载excel表格软件(电脑怎么下载EXCL)

  • 认证失败是什么意思(认证失败提醒)

    认证失败是什么意思(认证失败提醒)

  • 手机如何还原出厂设置(手机如何还原出厂系统华为)

    手机如何还原出厂设置(手机如何还原出厂系统华为)

  • 抖音收不到别人的艾特(抖音收不到别人点赞怎么回事)

    抖音收不到别人的艾特(抖音收不到别人点赞怎么回事)

  • vivox27为啥没有面部解锁(vivox27手机不出了吗)

    vivox27为啥没有面部解锁(vivox27手机不出了吗)

  • 淘宝币在哪看(在哪里看有多少淘宝币)

    淘宝币在哪看(在哪里看有多少淘宝币)

  • 人民网留言删除方法(人民网留言删除后会被客服回复吗)

    人民网留言删除方法(人民网留言删除后会被客服回复吗)

  • iphone11是双层主板吗(苹果11是双层主板吗?)

    iphone11是双层主板吗(苹果11是双层主板吗?)

  • 微信时间限额什么意思(微信限额什么时候才可以转账)

    微信时间限额什么意思(微信限额什么时候才可以转账)

  • 电子计算机的用户叫什么(电子计算机的用途有哪些)

    电子计算机的用户叫什么(电子计算机的用途有哪些)

  • 企业抖音怎么登录(抖音如何登录企业号)

    企业抖音怎么登录(抖音如何登录企业号)

  • 外拨电话被限制怎么解(外拨电话被限制怎么办视频)

    外拨电话被限制怎么解(外拨电话被限制怎么办视频)

  • 手把手教你训练一个VAE生成模型一生成手写数字(你知道怎么训练)

    手把手教你训练一个VAE生成模型一生成手写数字(你知道怎么训练)

  • Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数)

    Vue生命周期钩子剖析(共12个钩子)(vue生命周期钩子函数)

  • 一般纳税人开劳务专票多少个点
  • 小规模纳税人零申报是每季度报吗
  • 贴现的费用怎么入账
  • 原始凭证分割单样本
  • 个人社保由单位承担的可以进福利费吗
  • 公司注销后专利还能转让吗
  • 股息红利是否纳入个税合并征税
  • 融资性售后回租承租方出售资产为什么不缴纳增值税
  • 分公司借款给总公司
  • 从银行取现回单怎么取
  • 销售成本结转中的库存商品的单价错了怎么改u8
  • 前年的票发现要不得,可以冲红吗
  • 税费种认定功能在哪里
  • 办公用品包括啥
  • 没有预付账款科目计入哪里
  • 期权的行权收益
  • 工会经费该怎么交
  • win10如何删除windows账户
  • w10系统搜索
  • 公司投资理财产品
  • 最新版小企业会计准则是哪一年的
  • win10开机黑屏几秒
  • 合伙企业生产经营所得
  • 当月工资个税怎么算
  • 个人开收据应该注意什么
  • 国家税务总局关于个人因解除劳动合同
  • 固定资产清理的会计科目处理
  • 解决微信授权回复的方法
  • vue父子组件生命周期钩子执行顺序
  • 真正的出道仙谁来封
  • 数据库管理系统能对数据库中的数据进行查询
  • 生育保险具体待遇是什么
  • 政府会计代扣公积金怎么做分录
  • python tkinter ttk
  • 工资月末结转
  • 企业在建工程领用原材料的会计分录
  • 装修费用一次性计入成本
  • 什么是企业的应付账款
  • 织梦文档网站模板
  • mysql数据库如何回滚
  • 资产报废的原因及情况说明
  • 增值税专用发票上注明的价款含税吗
  • sqlserver模糊查询表名
  • 固定资产折旧计入什么费用
  • 固定资产增加
  • 购买职工福利
  • 所得税暂缓缴纳本来是不缴纳
  • 收到股东投资款需要交什么税
  • 出口样品的销售好做吗
  • 技术服务费收入会计分录怎么写
  • 主营业务成本可以设明细科目吗
  • 发票监制章是什么章图片
  • sql-3
  • mysql分表实践
  • win8连接网络
  • 如何查看电脑型号及配置
  • 开源镜像是什么意思
  • 虚拟机ubuntu怎么用
  • ubuntu debian centos
  • linux如何设置用户自己的工作环境
  • 获取shell脚本执行结果
  • win81怎么取消开机密码
  • linux系统获取ip地址
  • nodejs edge
  • 浏览器兼容的方法
  • Shell脚本监控linux系统信息
  • linux shell 循环语句
  • unity如何连接数据库
  • android studio怎么样
  • Shell、Perl、Python、PHP访问 MySQL 数据库代码实例
  • javascript indexOf函数使用说明
  • javascript修改
  • js对象的常用方法
  • android studio中r文件在哪
  • 国家税务总局广州市税务局
  • 汽车维修增值税专用发票
  • 稳岗补贴是否需要发放
  • ecco made in china
  • 税费银联缴款
  • 计提印花税入什么科目核算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设