位置: IT常识 - 正文

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

发布时间:2024-01-16
前端直接生成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页面布局)

  • 腾讯视频vip会员怎么共享给别人登录(怎么登陆别人的腾讯视频vip会员)

    腾讯视频vip会员怎么共享给别人登录(怎么登陆别人的腾讯视频vip会员)

  • 小米8微信视频有美颜吗(小米8微信视频聊天怎么设置美颜功能)

    小米8微信视频有美颜吗(小米8微信视频聊天怎么设置美颜功能)

  • qq空间如何设置转发权限(qq空间如何设置半年可见)

    qq空间如何设置转发权限(qq空间如何设置半年可见)

  • wps2019如何新建空白表格(在wps里面怎么新建文档)

    wps2019如何新建空白表格(在wps里面怎么新建文档)

  • WPS文章中的序号怎么设置(wps文章中的序号怎么去掉)

    WPS文章中的序号怎么设置(wps文章中的序号怎么去掉)

  • 微信如何回复单条信息(微信如何回复单独一句话)

    微信如何回复单条信息(微信如何回复单独一句话)

  • 华为p20忘记密码怎么强制解锁(华为p20忘记密码怎么刷机)

    华为p20忘记密码怎么强制解锁(华为p20忘记密码怎么刷机)

  • 淘宝追加评价有时间限制吗(淘宝追加评价有效期多久)

    淘宝追加评价有时间限制吗(淘宝追加评价有效期多久)

  • iphone11呼叫转移设置不了(iphone11呼叫转移怎么设置不了)

    iphone11呼叫转移设置不了(iphone11呼叫转移怎么设置不了)

  • icloud满了手机影响吗(icloud满了手机会不会变卡)

    icloud满了手机影响吗(icloud满了手机会不会变卡)

  • 为什么不能极速退款了(为什么不能极速退款淘宝)

    为什么不能极速退款了(为什么不能极速退款淘宝)

  • 苹果怎么测试屏幕灵敏度(苹果怎么测试屏幕触摸不灵敏)

    苹果怎么测试屏幕灵敏度(苹果怎么测试屏幕触摸不灵敏)

  • 耳机夹子怎么用(耳机夹怎么用?)

    耳机夹子怎么用(耳机夹怎么用?)

  • 网络显示hd啥意思(网络出现hd是不是说明网络不好)

    网络显示hd啥意思(网络出现hd是不是说明网络不好)

  • 苹果7和人视频怎么美颜(苹果7p手机视频)

    苹果7和人视频怎么美颜(苹果7p手机视频)

  • 一加7T怎么打开夜间模式(一加7t怎么打开dc调光)

    一加7T怎么打开夜间模式(一加7t怎么打开dc调光)

  • 小米手机实况拍照功能在哪(小米手机实况拍照在哪里)

    小米手机实况拍照功能在哪(小米手机实况拍照在哪里)

  • 快手动态信息保持多久(快手动态信息保存在哪里)

    快手动态信息保持多久(快手动态信息保存在哪里)

  • 华为带nfc功能的手机(华为带nfc功能的手机有哪些)

    华为带nfc功能的手机(华为带nfc功能的手机有哪些)

  • 华为9.0和9.1有什么区别(华为9.1系统和10.0系统哪个好)

    华为9.0和9.1有什么区别(华为9.1系统和10.0系统哪个好)

  • 微信能发闪照吗(微信能发闪照吗安全吗)

    微信能发闪照吗(微信能发闪照吗安全吗)

  • 抖音怎么上传5分钟视频(抖音怎么上传5分钟长视频教程)

    抖音怎么上传5分钟视频(抖音怎么上传5分钟长视频教程)

  • 三分频和二分频的区别(三分频和二分频哪个好听 论坛)

    三分频和二分频的区别(三分频和二分频哪个好听 论坛)

  • Linux中禁止root用户SSH登录及修改SSH端口的方法(linux不允许root登录)

    Linux中禁止root用户SSH登录及修改SSH端口的方法(linux不允许root登录)

  • 小规模要交增值税怎么计提
  • 应交所得税的计税依据
  • 软件研发阶段和开发阶段如何区分
  • 港资企业定义
  • 一般纳税人科技公司发票是几个点
  • 分公司的所得税怎么申报
  • 年初的进项税额计算公式
  • 视同销售要确认收入吗?
  • 亏损企业研发费加计扣除可以递延吗
  • 转让财产收入计入哪个科目
  • 固定资产常用计算公式
  • 加工承揽合同印花税谁交
  • 个体生产经营所得税税率2023
  • 小微企业2018年所得税税率
  • 销售佣金税点
  • 纳税人提供不动产经营租赁增值税征收管理
  • 质量抽样检查
  • 电子发票报销有什么用
  • 固定资产发现入账错误折旧如何处理?
  • 增值税发票跨年了还能用吗
  • 押金拿不到怎么解决
  • 收到退回所得税怎么做帐
  • 转让金融商品应交增值税计算公式
  • 旅行社差额征税税率5%
  • 桌面或文件夹内无图标
  • word从一台电脑考到另一台电脑格式不一致怎么解决
  • 如何检查文档
  • 代收代付款项入账需要什么资料
  • php ajax 实现
  • php ffi 教程
  • 融资租入固定资产是什么意思
  • 房地产企业购地印花税如何入账
  • 辅助生产成本是
  • 个人股权转让应税凭证名称
  • js生成随机数字和字母组合
  • powercfg off
  • vue项目使用less
  • 所得税费用为什么不计入营业利润
  • api接口安全措施
  • 银行余额调节表的作用
  • 纳税调整调减有哪些
  • 现金折扣可以扣除吗
  • 收到红字发票如何认证呢
  • 车间检测费会计分录
  • 销售预付卡的账务处理
  • 调试机器要注意事项
  • 企业无力支付票据时应计入
  • 股东可用什么方式出资
  • 物流公司保险怎么买
  • 投资入股行为
  • sql嵌套执行顺序
  • sql忽略null
  • MySQL部署时提示Table mysql.plugin doesn’t exist的解决方法
  • ubuntu禁用服务命令
  • fedora14虚拟机安装教程
  • 用注册表关闭更新
  • windows模拟器(可安装电脑软件)
  • windows无法
  • windows sky high
  • centos7 network
  • 笔记本win8.1怎么重装系统
  • mac怎么卸载苹果系统
  • Apache 2.0.55 for Linux 下载
  • linux怎么使用ssh命令
  • macos unity
  • Ext JS 4实现带week(星期)的日期选择控件(实战一)
  • easyui demo
  • Unity3D游戏开发引擎
  • js创建元素
  • apache使用端口
  • nodejs怎么下载其他版本
  • rpg游戏脚本已经被备份
  • js实现滚动条
  • 遮罩层 css
  • nvm-windows
  • shell脚本编程实例
  • unity做网页
  • jquery给下拉框添加选项
  • python win10
  • 银行前置利息什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号