精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

手把手教你擼一個能生成抖音風格動圖的gif制作平臺

開發 架構
又到了一周一次的周總結, 筆者基于之前的開源項目 blink , 開發了一款能在線配置故障藝術, 并一鍵生成gif動圖的平臺, 這里暫時取名為QT. 接下來筆者將復盤一下該可視化平臺的實現步驟以及功能點, 讓大家都能做自己的Gif動圖生成平臺.

[[413844]]

前言

又到了一周一次的周總結, 筆者基于之前的開源項目 blink , 開發了一款能在線配置故障藝術, 并一鍵生成gif動圖的平臺, 這里暫時取名為QT. 接下來筆者將復盤一下該可視化平臺的實現步驟以及功能點, 讓大家都能做自己的Gif動圖生成平臺.

在線訪問地址: 趣圖——一款輕量級生成抖音風格動效的在線工具

正文

在開始正文之前, 我們先來看看使用效果圖:

首先我們拆解一下功能:

  • 圖形編輯區 —— 用來編輯動圖樣式, 問文字等
  • 預覽區 —— 用來預覽用戶實時配置的動畫效果
  • 結果展示區 —— 用來存放生成的gif效果
  • gif文件自動下載

我們大致理清了我們需要實現的功能之后, 我們就可以一步步來實現了.

在這里我想先簡單介紹一下背景: 在筆者之前開源了生成自定義故障藝術的組件庫Blink之后, 發現如果要將故障動圖放到第三方平臺, 必須需要用第三方錄屏軟件先把動圖錄制下來, 然后保存gif之后在傳到第三方平臺, 這個操作鏈路如下: 

筆者是在忍受不了那么多步驟, 一般在筆者的認知里一般實現一件簡單的事情超過3個步驟, 筆者是不能接受的,尤其是錄屏這種耗時任務. 所以再三思考還是決定自己開發一個平臺,將步驟壓縮到2步:

好了, 開始我們下面的技術探索.

1.1 開發圖形編輯區

圖形編輯區主要是表單編輯, 筆者這里使用antd來快速搭建一個簡單表單, 唯一值得注意的就是顏色組件, 這里筆者使用react-color, 因為vue3.0對jsx支持越來越好, 所以實現原理和react很像,這里筆者就直接用react來舉例子. 代碼如下:

  1. <div className={styles.editorArea}> 
  2.   <div className={styles.formItem}> 
  3.     <span className={styles.label}>文字: </span> 
  4.     <Input value={value['text']} placeholder="請輸入文本內容" onChange={(e) => onChange('text', e)} /> 
  5.   </div> 
  6.   <div className={styles.formItem}> 
  7.     <span className={styles.label}>大小: </span> 
  8.     <InputNumber value={value['fontSize']} placeholder="請輸入文本大小" onChange={(e) => onChange('fontSize', e)} /> 
  9.   </div> 
  10.   <div className={styles.formItem}> 
  11.     <span className={styles.label}>文字顏色: </span> 
  12.     <Color value={value['textColor'][0]} onChange={(e) => onChange('textColor', e, 1)} /> 
  13.     <Color value={value['textColor'][1]} onChange={(e) => onChange('textColor', e, 2)} /> 
  14.   </div> 
  15.   <div className={styles.formItem}> 
  16.     <span className={styles.label}>背景色: </span> 
  17.     <Color value={value['themeColor']} onChange={(e) => onChange('themeColor', e)} /> 
  18.   </div> 
  19.   <div className={styles.formItem}> 
  20.     <span className={styles.label}></span> 
  21.     <Button type="primary" onClick={generateGif}>導出Gif</Button> 
  22.     {/* <Button style={{marginLeft: '20px'}} onClick={reset}>重置</Button> */} 
  23.   </div> 
  24. </div> 

 

 

 

 

大家可以不用太關注代碼細節, 你可以使用任何熟悉的方式去開發, 表單編輯器主要是實現和預覽區域的互通, 在react里我們用hooks組件的useState來和Blink組件互通, vue的話可以直接用data或者vuex解決問題, 具體如下圖實現:

只要大家能實現這種過程就可以了. 在QT項目里的效果如下: 

1.2 實現預覽區

預覽區域的實現很簡單, 通過Blink暴露的屬性來動態傳遞即可, 這里我們有必要了解一下Blink的內部實現, 先上一下githugb地址: 基于react的css故障藝術庫 , 我們直接看組件的實現方式:

  1. import React, { useRef, useEffect } from 'react' 
  2. import './index.less' 
  3.  
  4. export default function Blink(props) { 
  5.   const {  
  6.     text = '趣談前端'
  7.     fontSize = '48px'
  8.     themeColor = '#000'
  9.     textColor = ['#74fcfd''#ea3448'], 
  10.     onRef 
  11.   } = props 
  12.  
  13.   const ref = useRef(null
  14.  
  15.   useEffect(() => { 
  16.     onRef && onRef(ref) 
  17.   }, []) 
  18.  
  19.   return ( 
  20.     <div className='blink' style={{backgroundColor: themeColor}} ref={ref}> 
  21.       <div className="blink-item" data-text={text} style={{fontSize: fontSize}}> 
  22.         <div className="text text-front" style={{color: textColor[0]}}>{text}</div> 
  23.         <div className="text text-back" style={{color: textColor[1]}}>{text}</div> 
  24.       </div> 
  25.     </div>  
  26.   ) 

至于樣式問題, 筆者在github里有詳細的介紹, 這里就不詳細說明了. 所以說我們在項目中實現預覽也很簡單, 直接引入組件即可:

  1. <Blink {...value} onRef={(ref) => { blinkRef.current = ref.current}} /> 

value就是form表單的配置產物.

1.3 實現預覽gif動圖

實現預覽gif動圖是文章的重點, 我們要考慮如何將dom轉化為圖片, 然后再將圖片轉化為gif. 這塊筆者思考了一會, 想出了一個解決方案, 思路如下: 先用canvas庫定時截取預覽區域的動畫效果, 生成n張關鍵幀圖片, 然后利用canvas將多張關鍵幀組裝成gif動圖. 筆者的思路主要采用的flash軟件的關鍵幀動畫的實現, 具體流程如下:

圖中我們涉及到了幾個有意思的插件, 筆者在H5-Dooring項目中也用到過,分別為:

  • dom-to-image —— 轉門將dom轉化為圖片的庫
  • gif.js —— 將多張圖片轉化為gif動圖

實現過程中由于dom-to-image產生圖片的過程是異步的, 但是我們要將所以圖片生成完之后才能傳給gif.js, 這里筆者用了promise.all;來實現(注意, 考點). 我們先將第一步驟二次封裝成新的promise對象, 代碼如下:

  1. const generateImg = (node, imgId, time) => { 
  2.     return new Promise((resolve, reject) => { 
  3.       setTimeout(() => { 
  4.         domtoimage.toPng(node) 
  5.         .then(function (dataUrl) { 
  6.           let img = new Image(); 
  7.           img.src = dataUrl; 
  8.           img.id = imgId; 
  9.           img.className = 'imgPiece'
  10.           document.getElementById('imgBox').appendChild(img); 
  11.           resolve(document.getElementById(imgId)); 
  12.         }) 
  13.         .catch(function (error) { 
  14.           reject(error); 
  15.         }); 
  16.       }, time
  17.     }) 
  18.  } 

其次我們使用promise.all來將圖片統一收集傳給gif.js對象:

  1. const generateGif = () => { 
  2.     document.getElementById('imgBox').innerHTML = ''
  3.     let blink = blinkRef.current
  4.     let promiseArr = []; 
  5.  
  6.     for(let i=0, len=24; i < len; i++) { 
  7.       promiseArr.push(generateImg(blink, `img${i+1}`, 16 * i)); 
  8.     } 
  9.  
  10.     Promise.all(promiseArr).then(res => { 
  11.       if(res) { 
  12.         let w = res[0].width; 
  13.         let h = res[0].height; 
  14.          // res即為所有的img集合, 可以直接傳給gif.js ... 
  15.         }); 
  16.       } 
  17.     }) 
  18.   } 

關于gif.js的使用方法, 官網里也有詳細的介紹, 這里筆者不一一舉例了, 感興趣的朋友可以研究一下.

1.4 一鍵下載gif動圖

實現現在gif文件我們采用file-saver模塊來實現, 實現思路也很簡單, 如下:

  1. saveAs(image, `${uuid(6, 10)}.gif`); 

image即是gif.js或者其他動圖插件生成的gif圖片, uuid主要是給圖片命名. 我們可以看看幾個下載好的gif例子:

[[413849]]

最后

在H5編輯器H5-Dooring中,后期也會實現類似的功能,大家感興趣的可以了解一下。

github:H5編輯器H5-Dooring

github:Blink

本文轉載自微信公眾號「趣談前端」,可以通過以下二維碼關注。轉載本文請聯系趣談前端公眾號。

 

責任編輯:武曉燕 來源: 趣談前端
相關推薦

2022-08-26 08:01:38

DashWebJavaScrip

2022-02-14 09:11:17

視頻下載器抖音

2022-10-19 14:30:59

2023-03-22 09:00:38

2021-06-22 10:43:03

Webpack loader plugin

2019-08-26 09:25:23

RedisJavaLinux

2022-06-28 15:29:56

Python編程語言計時器

2022-09-22 12:38:46

antd form組件代碼

2020-12-23 09:48:37

數據工具技術

2020-12-14 08:05:28

Javascript隨機canvas

2021-08-31 10:02:10

KubernetesLinux集群

2011-05-03 15:59:00

黑盒打印機

2011-01-10 14:41:26

2025-05-07 00:31:30

2018-11-22 09:17:21

消息推送系統

2016-11-01 09:46:04

2021-07-14 09:00:00

JavaFX開發應用

2016-10-25 14:54:37

2022-05-18 08:51:44

調用模板后端并行

2023-11-28 07:36:41

Shell腳本部署
點贊
收藏

51CTO技術棧公眾號

久久最新网址| 四虎国产精品永远| 亚洲色图88| 欧美成人在线直播| 日韩av综合在线观看| 欧美日韩在线精品一区二区三区激情综| 亚洲主播在线| 色偷偷av一区二区三区乱| 波多野结衣91| 久久综合电影一区| 久久福利小视频| 精品自拍视频| 五月天亚洲婷婷| 亚洲一区免费看| 欧美 中文字幕| 蜜桃视频免费观看一区| 久久久久亚洲精品国产| 日本污视频网站| 澳门成人av| 精品视频资源站| 成年人午夜免费视频| wwwww在线观看免费视频| 成人一级视频在线观看| 国产精品九九九| 久久久久久久久久影院| 999久久久亚洲| 亚洲美女免费精品视频在线观看| 欧美视频亚洲图片| 欧美大胆成人| 五月综合激情日本mⅴ| 精品日韩在线播放| 福利成人在线观看| 亚洲1区在线| 国产精东传媒成人av电影| 亚洲国产综合色| 在线观看一区欧美| 国产h视频在线观看| 99久久99久久精品免费看蜜桃| 91人人爽人人爽人人精88v| 亚洲综合久久网| 一本久道综合久久精品| 欧美剧在线观看| 久久av红桃一区二区禁漫| 欧美日本成人| 亚洲性生活视频在线观看| 国产高清自拍视频| 精品国产乱子伦一区二区| 日韩一区二区精品葵司在线 | www.欧美日本韩国| 欧美国产禁国产网站cc| 欧美日韩一区二区视频在线观看| 涩涩视频免费看| 成人动漫一区二区| 国产欧美韩日| 天天av天天翘| 91视频免费播放| 欧美成人一区二区在线| 亚洲欧美日韩另类精品一区二区三区| 久久精品国产亚洲AV无码男同| 亚洲xxx拳头交| 久久久av网站| 久热这里有精品| 欧美日韩一卡| 欧美激情中文字幕在线| 久久久久97国产| 影音国产精品| 2021久久精品国产99国产精品| 日韩少妇高潮抽搐| 免费中文字幕日韩欧美| 国产成人97精品免费看片| 免费观看日批视频| 琪琪一区二区三区| 国产在线观看精品一区二区三区| 91精品国产乱码久久| 狠狠色丁香九九婷婷综合五月| 91精品国产自产在线老师啪| 99精品在线看| gogo大胆日本视频一区| 青青草原亚洲| 日本视频在线观看| 亚洲激情五月婷婷| 国产人妻777人伦精品hd| 午夜影院在线播放| 欧美日韩精品综合在线| 大伊人狠狠躁夜夜躁av一区| 久久综合给合久久狠狠色| 久草在线免费福利资源| 国产精品丝袜久久久久久app| 在线视频福利一区| 高清电影在线免费观看| 精品久久久久久久久久国产 | 国内一区二区视频| 国产高清在线一区| 国产无套粉嫩白浆在线2022年| 国产精品久久福利| 青青草国产精品视频| 欧美艳星kaydenkross| 欧美日韩一区视频| 国产高清成人久久| 日韩免费看片| 97视频在线观看亚洲| 最新国产中文字幕| 成人黄色一级视频| 亚洲一区二区三区精品在线观看 | 一区二区三区中文字幕电影| 99热在线这里只有精品| 99久久久国产| 国产午夜精品理论片a级探花| 高清欧美性猛交xxxx| 欧美性xxxx图片| 国产韩日影视精品| 欧美在线视频一二三| 国产精品毛片久久久久久久av| 99久久婷婷国产综合精品| 国产又爽又黄ai换脸| 亚洲深夜视频| 精品久久久久av影院| 91成人精品一区二区| 亚洲日本视频| 成人亚洲激情网| 国产视频三级在线观看播放| 亚洲国产cao| 亚洲自拍第三页| 亚洲综合图色| 97香蕉超级碰碰久久免费软件| 91精品国产乱码久久久久| 国产午夜一区二区三区| 波多野结衣家庭教师在线| 日韩av综合| 久久精品2019中文字幕| 日韩欧美国产另类| 久久一区二区视频| 国产免费黄色一级片| 中文成人在线| 亚洲欧美制服丝袜| 精品国产一区二区三区四| 成人久久视频在线观看| 色婷婷激情一区二区三区| 男人天堂av片| 日韩第一区第二区| 欧美xxxx做受欧美.88| 中文字幕 视频一区| 国产午夜精品福利| 日韩免费高清在线| 一呦二呦三呦国产精品| 57pao精品| 天堂成人在线| 韩曰欧美视频免费观看| 久久精品综合视频| 亚洲毛片av| 久久精品国产综合精品| 绿色成人影院| 日韩精品视频在线观看免费| 国产成人无码精品久久久久| 成人免费不卡视频| 国产精品999视频| 偷拍自拍一区| 国产成人精品视频在线| 国产香蕉在线| 欧美巨大另类极品videosbest| 欧美一区二区三区观看| 精品在线免费观看| www亚洲国产| 综合激情网...| 国语自产精品视频在线看| 天堂av在线播放| 在线视频你懂得一区| 亚洲精品免费在线看| 女同久久另类69精品国产| 香蕉亚洲视频| 亚洲mv在线看| 97久久精品一区二区三区的观看方式| 久久偷看各类女兵18女厕嘘嘘| 国产成人精品一区二三区四区五区 | 疯狂做受xxxx高潮欧美日本| 右手影院亚洲欧美| 免费观看在线综合色| 国产系列第一页| 大伊香蕉精品在线品播放| 日本aⅴ大伊香蕉精品视频| 成人18在线| 日韩网站在线看片你懂的| 免费人成年激情视频在线观看| 99精品在线观看视频| 最近中文字幕一区二区| 欧美va亚洲va日韩∨a综合色| 精品久久久久久一区| 国产a亚洲精品| 欧美人与性动交| 久草在线免费福利资源| 欧美一级xxx| www.色国产| 亚洲日本欧美天堂| 中文字幕在线观看网址| 韩国av一区二区三区四区| 欧美 丝袜 自拍 制服 另类| 日本欧美肥老太交大片| 国产精品欧美久久久久无广告 | 国产日韩三级| 国产精品久久久精品| 中国av在线播放| 亚洲网站在线观看| 性欧美videos另类hd| 色视频一区二区| 九九视频在线观看| 欧美国产综合一区二区| 涩视频在线观看| 麻豆传媒一区二区三区| 91成人在线观看喷潮教学| 99视频精品视频高清免费| 久久久精品国产一区二区三区| 不卡的国产精品| 国产精品第一页在线| av影视在线| 欧美另类在线观看| 色综合久久影院| 国产视频久久久久| 好吊色视频一区二区| 制服丝袜一区二区三区| 精品黑人一区二区三区| 午夜精品福利在线| 国产乱国产乱老熟300| 日本一区二区三区四区| 黄色a一级视频| 成人精品视频一区二区三区| wwwwwxxxx日本| 日本午夜精品一区二区三区电影 | 欧美性猛交xxxx黑人| 99自拍视频在线| 欧美国产视频在线| 麻豆精品免费视频| 97久久人人超碰| 国产一级黄色录像| 丁香激情综合五月| 成年人性生活视频| 激情六月婷婷久久| 九九热免费在线观看| 麻豆成人久久精品二区三区小说| 亚洲欧洲日产国码无码久久99| 亚洲另类黄色| 久久久久久久久久网| 亚洲欧洲一区| 亚洲不卡中文字幕无码| 亚洲精品影院在线观看| 亚洲中文字幕无码av永久| 伊人精品视频| 黄色一级在线视频| 91久久黄色| 无码精品a∨在线观看中文| 亚洲日本国产| 日本在线观看a| 另类激情亚洲| 色多多视频在线播放| 秋霞电影一区二区| 一级黄色特级片| 国内精品伊人久久久久av一坑| 亚洲精品乱码久久久久久动漫| 国产真实乱偷精品视频免| 久久久九九九热| 国产成人a级片| 小毛片在线观看| 亚洲精品911| 91黄色小视频| 狠狠躁夜夜躁人人爽视频| 欧美性淫爽ww久久久久无| 在线免费观看一级片| 6080国产精品一区二区| 午夜久久久久久噜噜噜噜| 精品国产髙清在线看国产毛片| 神马午夜在线观看| 亚洲色图15p| 欧美边添边摸边做边爱免费| 久久91精品国产91久久久| www.综合网.com| 国产不卡在线观看| 日韩电影精品| 粉嫩av四季av绯色av第一区| 欧美美女在线直播| 欧洲国产精品| 一区二区国产在线| 国产美女在线一区| 免费看黄色91| 亚洲成人激情小说| 久久尤物电影视频在线观看| 亚洲 欧美 国产 另类| 亚洲永久精品国产| 波多野结衣黄色| 日韩欧美在线123| 欧美日韩伦理片| 美女精品久久久| 日韩性xxx| 91国产在线播放| 久久99久久人婷婷精品综合 | 欧美久久影院| 欧美国产日韩在线播放| 国产成人综合亚洲网站| 久久久视频6r| 中文在线观看av| 欧美影院精品一区| 亚洲av永久纯肉无码精品动漫| 亚洲免费一在线| 污片在线免费观看| 国产精品丝袜白浆摸在线 | 久久国内精品自在自线400部| 性活交片大全免费看| 中文字幕第一区综合| 国产真实乱偷精品视频| 欧美日韩精品专区| 日本天堂影院在线视频| 欧美高清性猛交| 一区二区三区| 日本午夜精品一区二区| 亚洲黄色一区| 蜜桃视频无码区在线观看| 国产日产欧美一区二区三区 | 亚洲久久一区二区| 九九九九九国产| 国产日产亚洲精品系列| 国产又黄又爽又色| 精品久久久久久久久久久久久久久久久 | 国产精品21p| 精品国产免费人成电影在线观看四季| 伊人免费在线| 国产精品成人va在线观看| 欧美尿孔扩张虐视频| 亚洲中文字幕无码一区二区三区| 免费观看在线色综合| 免费污网站在线观看| 亚洲麻豆国产自偷在线| 91精品人妻一区二区三区果冻| 国产精品玖玖玖在线资源| 亚洲自拍欧美色图| 国产精品久久久久久影院8一贰佰| 免费日韩视频在线观看| 99久久精品国产观看| 久久午夜鲁丝片午夜精品| 在线电影院国产精品| shkd中文字幕久久在线观看| 日本欧美在线视频| 精品在线观看入口| 欧美视频免费播放| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲高清在线免费观看| 久久久久久综合| 国产剧情在线视频| 亚洲男人天堂2023| 中文字幕高清在线播放| 久久综合入口| 天堂蜜桃91精品| 极品人妻videosss人妻| 色乱码一区二区三区88| 福利视频在线看| 国产精品欧美日韩一区二区| 第四色成人网| 日韩av片专区| 亚洲精品乱码久久久久久日本蜜臀| 国产精品久久久久久久免费看| 久久精品国产清自在天天线 | 日韩欧美一级片| a级大胆欧美人体大胆666| 国产私拍一区| 老司机一区二区三区| 美女100%露胸无遮挡| 欧美三级欧美一级| 国产黄色在线网站| 欧美精品乱码久久久久久| 懂色av粉嫩av浪潮av| 欧美在线一区二区| 欧美18hd| 国产精品大全| 久久精品电影| 91狠狠综合久久久| 欧美大肚乱孕交hd孕妇| 国产伦理精品| 四虎一区二区| 国产福利91精品一区二区三区| 日韩无码精品一区二区三区| 亚洲精品一二区| 自拍偷拍亚洲图片| 欧日韩免费视频| 国产欧美日韩亚州综合 | 亚洲精品在线免费观看视频| 欧美a级在线观看| 亚洲精品一区二区三区樱花| 国产麻豆9l精品三级站| www成人在线| 日韩网站免费观看高清| 99国产精品免费网站| 日韩无套无码精品| 亚洲欧美经典视频| 日韩av视屏| 99re视频在线播放| 裸体素人女欧美日韩| 欧美激情精品久久久久久免费| 精品国产乱码久久| 99re久久| 男人用嘴添女人下身免费视频| 国产精品嫩草99a| 日本精品999| 成人疯狂猛交xxx|