canvas+gif.js打造自己的數字雨頭像


前言

昨天 是1024程序員節,不知道各位看官過的怎么樣。既然是過節,就要有個過節的樣子,比方說,換個頭像😀。你看我的頭像牛逼不。今天介紹一個小demo,上傳一個靜態頭像,就能得到一個動態的數字雨頭像。搶先體驗傳送門](https://imgss.github.io/demo/gif/)

使用說明

  1. 傳一個你喜歡的頭像,最好是正方形的

  2. 生成后看字符顏色是不是太詭異,如果是,可以調整一下字符顏色

  3. 覺得滿意,右鍵另存為或者點擊下載即可

gif.js

今天的主角是gif.js,gif.js是一個在瀏覽器上依靠H5api就能gif動畫的庫,這里介紹一下我猜的坑。關於繪制數字雨,園子里有相關文章,我就不瞎BB了。

gif.js可以很方便的根據canvas動圖得到gif:

//代碼來自官網

var gif = new GIF({
  workers: 2,//啟用兩個worker。
  quality: 10//圖像質量
});//創建一個GIF實例

// 核心方法,向gif中加一幀圖像,參數可以是img/canvas元素,還可以從ctx中復制一幀
gif.addFrame(imageElement);

// or a canvas element
gif.addFrame(canvasElement, {delay: 200});//一幀時長是200

// or copy the pixels from a canvas context
gif.addFrame(ctx, {copy: true});

gif.on('finished', function(blob) {//最后生成一個blob對象
  window.open(URL.createObjectURL(blob));
});

gif.render();//開始啟動

整體而言,這個庫的api十分簡潔,友好。之前看了一個jsGif,看的雲里霧里,后來才發現這么個好東西。由於生成gif圖像是個耗費cpu的操作,尤其是當圖像比較大的時候,因此庫允許在webworker中渲染。但是文檔中還是有幾個要注意的地方要說明(其實是我踩的坑):

  1. git.addFrame是添加一幀,要生成會動的gif,要來一個循環:
for(...){
    gif.render(...)
}
  1. 構造函數GIF的選項中,需要workerScript選項,這樣才能實現在worker中渲染圖像,如下所示:
    var gif = new GIF({
    workers: 2,
    quality: 10,
        workerScript:'./gif.worker.js'
    });

源碼我放在github上了,https://github.com/imgss/gif_rain_code,或者F12直接看demo。喜歡的話,請給我一個star,那我就要開心死了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM