欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)GIF圖片的分解和合成

 更新時(shí)間:2019年10月24日 11:42:53   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)GIF圖片的分解和合成,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

無意中看到一篇文章寫得是關(guān)于純前端處理GIF圖片的問題,感覺挺有意思的所以自己也實(shí)現(xiàn)了一下;

主要用到的有兩個(gè)第三方庫:合成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標(biāo)簽配置下面兩個(gè)屬性
  gifImg.setAttribute('rel:animated_src', URL.createObjectURL(gif_source))
  gifImg.setAttribute('rel:auto_play', '0')
 
  // 新建gif實(shí)例
  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實(shí)例的每一幀
  rub.move_to(i);
 
  var imgImage = new Image();
  //canvas生成base64圖片數(shù)據(jù)
  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);
}

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

相關(guān)文章

  • JS中dom0級事件和dom2級事件的區(qū)別介紹

    JS中dom0級事件和dom2級事件的區(qū)別介紹

    這篇文章主要介紹了JS中dom0級事件和dom2級事件的區(qū)別介紹,非常有參考價(jià)值,特此分享到腳本之家平臺供大家參考
    2016-05-05
  • 移動(dòng)端腳本框架Hammer.js

    移動(dòng)端腳本框架Hammer.js

    這篇文章主要為大家詳細(xì)介紹了一款開源的移動(dòng)端腳本框架Hammer.js,可以完美的實(shí)現(xiàn)在移端開發(fā)的大多數(shù)事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS獲取當(dāng)前時(shí)間戳與時(shí)間戳轉(zhuǎn)日期時(shí)間格式問題

    JS獲取當(dāng)前時(shí)間戳與時(shí)間戳轉(zhuǎn)日期時(shí)間格式問題

    這篇文章主要介紹了JS獲取當(dāng)前時(shí)間戳與時(shí)間戳轉(zhuǎn)日期時(shí)間格式,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 基于js的變量提升和函數(shù)提升(詳解)

    基于js的變量提升和函數(shù)提升(詳解)

    下面小編就為大家?guī)硪黄趈s的變量提升和函數(shù)提升(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • JS中定位 position 的使用實(shí)例代碼

    JS中定位 position 的使用實(shí)例代碼

    本文通過實(shí)例代碼給大家介紹了JS中定位 position 的使用,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-08-08
  • 僅IE9/10同時(shí)支持script元素的onload和onreadystatechange事件分析

    僅IE9/10同時(shí)支持script元素的onload和onreadystatechange事件分析

    測試結(jié)果可以看出,IE9后已經(jīng)開始支持script的onload事件了。一直以來我們判斷js文件是否已經(jīng)加載完成就是用以上的兩個(gè)事件。
    2011-04-04
  • Javascript異步編程模型Promise模式詳細(xì)介紹

    Javascript異步編程模型Promise模式詳細(xì)介紹

    異步模式在 Web 編程中變得越來越重要,如何處理異步請求后的操作是一件麻煩事。Promise 是一種異步編程模型,術(shù)語稱作 Deferred 模式,它通過一組API來規(guī)范化異步操作,讓異步操作的流程控制更加容易。
    2014-05-05
  • 自制微信公眾號一鍵排版工具

    自制微信公眾號一鍵排版工具

    這篇文章主要介紹了自制微信公眾號一鍵排版工具的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 一個(gè)支持ff的modaldialog的js代碼

    一個(gè)支持ff的modaldialog的js代碼

    一個(gè)支持ff的modaldialog的js代碼...
    2007-03-03
  • ES6之Proxy的get方法詳解

    ES6之Proxy的get方法詳解

    這篇文章主要介紹了ES6之Proxy的get方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論