富贵资源网 Design By www.hznty.com
在项目中遇到需要支持上传gif图片,并把其分解的帧图片一次展示给用户。话不多说直接上代码
分解gif图片需要使用libgif-js这个库!
1. 引入Git库
import SuperGif from './libgif.js'
2. 分解Gif为png图片
const GifDecomposer = { structureGifObject (gifFiles, cb) { // gifFiles 获取的文件对象 e.target.files[0] const gifImg = document.createElement('img'); gifImg.setAttribute('rel:animated_src', URL.createObjectURL(gifFiles)); gifImg.setAttribute('rel:auto_play', '0'); // Modified pictures must be added to the body document.body.appendChild(gifImg); // Construction example var rub = new SuperGif({ gif: gifImg }); rub.load(() => { var img_list = []; for (let i=1; i <= rub.get_length(); i++) { // Traversing through each frame of a GIF instance rub.move_to(i); // Converting each frame of canvas into a file object let cur_file = this.convertCanvasToImage(rub.get_canvas(), gifFiles.name.replace('.gif', '') + `-${i}`) img_list.push({ file_name: cur_file.name, url: URL.createObjectURL(cur_file), file: cur_file, }) } cb(img_list) }); }, dataURLtoFile (dataurl, filename) { const arr = dataurl.split(','); const mime = arr[0].match(/:(.*"htmlcode">/** * costume upload GIF decomposer */ const filesImg = function (list, storage, costumeFormat, assetType, handleCostume) { let proDataList = list.map((item, index) => { return new Promise(function(resolve, reject) { let reader = new FileReader(); reader.readAsArrayBuffer(item.file); reader.onload = () => { let data = {result: reader.result, type: item.file.type, name: item.file.name} resolve(data); }; reader.onerror = (error) => {reject(error)}; }) }) Promise.all(proDataList).then(res => { res.forEach(item => { // 上传 }) }).catch(data => {console.log(data)}) }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
富贵资源网 Design By www.hznty.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
富贵资源网 Design By www.hznty.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。