时间:2021-05-26
无意中看到一篇文章写得是关于纯前端处理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);}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在项目中遇到需要支持上传gif图片,并把其分解的帧图片一次展示给用户。话不多说直接上代码分解gif图片需要使用libgif-js这个库!1.引入Git库impo
案例:将和当前脚本同目录下的gif图片分解成png图片,并将分解后的图片保存到pics目录下,将其从0开始命名。GIF动图的分解可以利用PIL模块的Image类
一、概述:本文详解了PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法。首先要实现PHP使用php_imagick_st-Q8.
1、GIF制作app是一款专业编辑Gif文件工具,可以实现gif图片录制、视频转gif图片、静态图片转gif图片以及在GIF图片上增添文字,在操作和界面设计
首先需要确认GD库是否正常,如果是合成图片,请确保把分解的图片放在frames的文件夹里面。GIFEncoder.class.php类"Doesnotsuppo