无意中看到一篇文章写得是关于纯前端处理GIF图片的问题,感觉挺有意思的所以自己也实现了一下;

主要用到的有两个第三方库:合成GIF图片的gif.js和分解的libgif.js;

分解GIF

1. 引入Git库

import SuperGif from './libgif.js'

2. 处理图片

var file = e.target.files[0];

console.log(file.type.indexOf('image/gif'));

load_gif(file);

function load_gif(gif_source) {

var gifImg = document.getElementById('gifImg');

// gif库需要img标签配置下面两个属性

gifImg.setAttribute('rel:animated_src', URL.createObjectURL(gif_source))

gifImg.setAttribute('rel:auto_play', '0')

// 新建gif实例

var rub = new SuperGif({ gif: gifImg } );

var running = false;

rub.load(function(){

var img_list = [];

var j = 0;

console.log(rub.get_length());

for (var i=1; i <= rub.get_length(); i++) {

// 遍历gif实例的每一帧

rub.move_to(i);

var imgImage = new Image();

//canvas生成base64图片数据

imgImage.src = rub.get_canvas().toDataURL('image/jpeg',0.8);

}

}

合成GIF图片

1. 引入Git库

import GIF from './gif.js'

2. 图片合成

var gif = new GIF({

workers: 2,

quality: 10,

workerScript: 'js/gif.worker.js'

});

var j = 0;

var canvas= document.createElement("canvas");

var ctx = tCanvas.getContext('2d');

for (var i=1; i <= len; i++) {

var imgImage = new Image();

imgImage.src = img;

imgImage.onload = function (e) {

//Canvas绘制图片

canvas.width = width;

canvas.height = height;

console.log(width,height)

//铺底色

ctx.fillStyle = "#fff";

ctx.fillRect(0, 0, canvas.width, canvas.height);

ctx.drawImage(imgImage, 0, 0, width, height);

gif.addFrame(canvas,{copy:true,delay:50});

j++;

//图片

if(j>=len) {

gif.render()

};

}

}

gif.on('finished', function(blob) {

//生成图片链接

var url = URL.createObjectURL(blob);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java gif图片分割合成,js实现GIF图片的分解和合成相关推荐

  1. css和js实现3d图片,JavaScript_纯JS实现旋转图片3D展示效果,CSS:style type=text/cssgt - phpStudy...

    纯JS实现旋转图片3D展示效果 CSS: #show{position:relative;margin:20px auto;width:800px;} .item{position:absolute; ...

  2. html上传动态图片不显示图片,解决 viewer.js 动态更新图片导致无法预览的问题

    前台页面要求图片的查看,是在表格中点击查看才弹出图片,网上发现用Viewer插件的挺多,就选用的这款插件,但是Viewer插件会产生缩略图,这里取巧了,将缩略图统一替换成了一个带有查看两字的小图片,这 ...

  3. html js 3d图片轮播,js实现3D图片逐张轮播幻灯片特效代码分享

    本文实例讲述了javascript实现3D图片逐张轮播幻灯片特效.分享给大家供大家参考.具体如下: 这是一款基于javascript实现3D图片逐张轮播幻灯片特效代码,实现过程很简单. 运行效果图:- ...

  4. java让gif图停止,JS控制GIF图片的停止与显示

    在掷骰子游戏中,通过需要控制骰子的转动以及转动结果的显示,骰子的转动可以用GIF动图来实现,每次投掷骰子的结果可以通过点击按钮显示静态图片.代码如下: CSS实现GIF动图的停止与开始(骰子) var ...

  5. blob 图片_前端JS实现字符串/图片/excel文件下载

    编者按:本文转载自SF专栏,由作者 赵帅强 授权奇舞周刊转载 在web开发中,如果你想让用户下载或者导出一个文件,应该怎么做呢? 传统的做法是在后端存储或者即时生成一个文件来提供下载功能,这样的优势是 ...

  6. android去掉png图片灰色背景,JS解决PNG图片灰色背景问题

    PNG图片用来制作漂亮的网页背景很实用,此方法也是比较简单的,会让网页增色不少.不过,万恶的IE似乎暗中做对,当你使用PNG图片的时候,IE会自动为PNG图片增加一个灰色背景,这真的好让人烦,那么有没 ...

  7. php 实现背景图片轮换,纯js实现背景图片切换效果代码

    html代码 背景切换 因为javascript逻辑顺序比较强,所以要考虑引用js的位置 css代码 body {font-size:12px;} div{ width:950px; height:8 ...

  8. 原生js通过canvas和cssRules实现图片分割与重组

    将一张照片分割成几段然后重新组合,按照常理来讲使用h5的canvas标签很容易就实现了,长话短说,直入正题: html : 首先创建一个img标签: <img id="img" ...

  9. Java接受blob类型图片_原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)...

    1.了解后端处理图像的方式 一:图片以独立文件的形式存储在服务器的指定文件夹中,再将路径存入数据库字段中 二:将图片转换成blob,直接存储到数据库的 Image 类型字段中(这种方式负担很大不建议使 ...

  10. java 将图片分割成9张_将多张图片合并成一张,代码(可垂直和水平方向合并)...

    importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio. ...

最新文章

  1. python打印小数
  2. 网站打开速度多少毫秒为正常_诠网科技|网站优化中跳出率多少才是合理的?...
  3. Angular 原理图 Schematics 学习 - 动手开发一个实际的例子
  4. Matlab坐标图像隐藏横纵坐标的方法
  5. UML之用例图(use case)箭头方向
  6. 设计灵感|展览海报如何排版?好的作品给你灵感
  7. idea开启自动热部署自动化devtools
  8. opencv之imread()
  9. 如何巧妙的运用好弹簧布局SpringLayout?
  10. thinkphp框架环境部署
  11. Wannafly交流赛1: D. 白兔的字符串(随机+EXKMP)
  12. 内推 | 高级数据分析师(base:杭州)
  13. 【Meachine Learning】lecture1 --吴恩达
  14. c语言算法单循环球队比赛安排,单循环赛赛程安排算法的研究.doc
  15. 大米云如何通过ssh连接云主机
  16. Gson报错Invalid time zone indicator ‘ ‘
  17. 米3从android6降回4,从5G到4G,三个月的思考后我从小米9 pro降级到了小米9T pro
  18. stable diffusion制作韩国版AI女友关键词
  19. java bidi_Java Bidi isRightToLeft()用法及代码示例
  20. 国外计算机科学的 lab,真滴牛逼!

热门文章

  1. Safari浏览器兼容性问题
  2. 喜洋洋大战灰太狼(大结局)
  3. 文献解读|DPP-4i治疗诱导的肠道微生物群的改变可改善葡萄糖稳态
  4. 在Ubuntu18上使用fusedav挂载城通网盘webdav
  5. PreparedStatement防止SQL注入
  6. xp系统显示无打印机服务器,XP没有打印机print spooler服务的解决方法
  7. 计算机无法启动printspooler,Win10安装打印机提示“Print Spooler无法启动”怎么办?...
  8. css 魔方,css 3d旋转魔方
  9. ftl有三种映射地址_ftl 入门
  10. 西门子1200PLC(入门)1