無意中看到一篇文章寫得是關于純前端處理GIF圖片的問題,感覺挺有意思的所以自己也實現了一下;
創新互聯公司是一家專業提供城關企業網站建設,專注與成都做網站、成都網站制作、H5開發、小程序制作等業務。10年已為城關眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。
主要用到的有兩個第三方庫:合成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); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。
新聞標題:js實現GIF圖片的分解和合成
網站路徑:http://m.kartarina.com/article2/pphooc.html
成都網站建設公司_創新互聯,為您提供網站導航、移動網站建設、App設計、電子商務、標簽優化、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯