最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)GIF動圖分解成多幀圖片上傳

 更新時間:2019年10月24日 11:03:45   作者:leez1212  
這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)GIF動圖分解成多幀圖片上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

在項目中遇到需要支持上傳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(/:(.*?);/)[1];
    const bstr = atob(arr[1]);
    var n = bstr.length;
    const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, {type:mime});
  },
  convertCanvasToImage (canvas, filename) {
    return this.dataURLtoFile(canvas.toDataURL('image/png'), filename);
  }
}

3. 上傳每一張圖片

/**
 * 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)})
 }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript 事件記錄使用說明

    JavaScript 事件記錄使用說明

    JavaScript 事件記錄使用說明需要的朋友可以參考下。
    2009-10-10
  • 淺談es6 javascript的map數(shù)據(jù)結(jié)構(gòu)

    淺談es6 javascript的map數(shù)據(jù)結(jié)構(gòu)

    本篇文章主要介紹了淺談es6 javascript的map數(shù)據(jù)結(jié)構(gòu),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • JavaScript阻止事件冒泡的幾種方法小結(jié)

    JavaScript阻止事件冒泡的幾種方法小結(jié)

    在?JavaScript?中,事件冒泡是指事件從觸發(fā)元素向上傳播到其祖先元素的過程,阻止事件冒泡可以防止事件傳播到父元素或其他祖先元素,本文給大家介紹了JavaScript阻止事件冒泡的幾種方法,需要的朋友可以參考下
    2025-03-03
  • 微信小程序事件流原理解析

    微信小程序事件流原理解析

    這篇文章主要介紹了微信小程序事件流原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 原生js實現(xiàn)彈窗消息動畫

    原生js實現(xiàn)彈窗消息動畫

    這篇文章主要為大家詳細(xì)介紹了原生js實現(xiàn)彈窗消息動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 詳解js獲取video任意時間的畫面截圖

    詳解js獲取video任意時間的畫面截圖

    這篇文章主要介紹了js獲取video任意時間的畫面截圖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • js實現(xiàn)倒計時時鐘的示例代碼

    js實現(xiàn)倒計時時鐘的示例代碼

    本篇文章主要是對js倒計時時鐘的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • 兼容最新firefox、chrome和IE的javascript圖片預(yù)覽實現(xiàn)代碼

    兼容最新firefox、chrome和IE的javascript圖片預(yù)覽實現(xiàn)代碼

    這篇文章主要介紹了兼容最新firefox、chrome和IE的javascript圖片預(yù)覽實現(xiàn)代碼,測試了瀏覽器firefox6、firefox12、chrome 25.0.1364.172 m、IE6-IE10 都兼容,需要的朋友可以參考下
    2014-08-08
  • js類的繼承定義與用法分析

    js類的繼承定義與用法分析

    這篇文章主要介紹了js類的繼承定義與用法,結(jié)合實例形式分析了javascript關(guān)于類的定義與繼承的相關(guān)使用技巧,需要的朋友可以參考下
    2019-06-06
  • javascript實現(xiàn)Table排序的方法

    javascript實現(xiàn)Table排序的方法

    這篇文章主要介紹了javascript實現(xiàn)Table排序的方法,涉及javascript針對表格對象的獲取與排序相關(guān)技巧,需要的朋友可以參考下
    2015-05-05

最新評論

察隅县| 莱州市| 鲁甸县| 涟源市| 西峡县| 高要市| 上杭县| 博客| 靖边县| 宁化县| 庄浪县| 江口县| 凉城县| 越西县| 云梦县| 东丽区| 含山县| 定陶县| 德格县| 定安县| 铅山县| 崇阳县| 保靖县| 施甸县| 志丹县| 镇远县| 仪陇县| 崇州市| 康乐县| 甘洛县| 沅江市| 镇平县| 光山县| 禹城市| 铁岭县| 南汇区| 扶风县| 西充县| 濮阳市| 安庆市| 巴中市|