日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > HTML > 正文

HTML5中通過li-canvas輕松實現單圖、多圖、圓角圖繪制,單行文字、多行文字等

2024-08-26 00:21:11
字體:
來源:轉載
供稿:網友

Html5新增的canvas是個強大的功能, 估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進行封裝的話,代碼會很亂,所以對canvas常用的畫圖、繪制文字、保存功能進行了封裝,目前還比較滿意,能夠快速完成canvas繪圖任務,從容應對需求變更,只需進行簡單配置即可。

li-canvas.js

對Html5的canvas功能進行了封裝,方便進行單圖、多圖繪制、圓角圖片繪制、多行文字繪制、自動換行、圖片保存下載等功能.

github地址: github.com/501351981/l…

主要功能

•圖片繪制:單圖/多圖繪制、圓角圖片繪制. •文字繪制:多段文字繪制、自動換行. •圖片保存:獲取圖片數據、下載圖片到本地,支持自定義下載圖片名.

npm安裝

# npm 安裝npm install --save li-canvas

直接引用

在html中直接引入js文件.

<script src="dist/li-canvas.js"></script>

如何使用

實例化

使用li-canvas時需要先實例化對象,new LiCanvas(canvas_id,options),傳入canvas的id,options選填,可以設置canvas背景和默認文字樣式等  

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180"></canvas><script> var canvas=new LiCanvas('test') </script></body>    ...

圖片繪制

•繪制單張圖片

調用addDrawImageTask(image),其中參數image是一個對象,包括

src:圖片的url地址

x:圖片在canvas畫布上的左上角x坐標

y:圖片在canvas畫布上的左上角y坐標

width:圖片繪制寬度

height:圖片繪制高度

borderRadius:圖片圓角半徑

調用addDrawImageTask(image)時,并沒有立即繪制圖片,而是添加了一個繪圖任務,只有調用draw(callback)時,才執行繪圖任務,執行完成調用callback回調函數

為什么這么做呢?因為圖片繪制的時候需要先下載圖片,這是個異步操作,所以先添加到任務列表,調用draw()的時候再按照任務添加順序依次執行  

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><img src="./bg.jpg" id="img" width="0" height="0"><script> var bg={        src:document.getElementById('img').src,//或者圖片的url地址        x:0,//左上角的x坐標        y:0,//左上角的y坐標        width:1563,//圖片繪制寬度        height:1180,//圖片繪制高度        borderRadius:0 //圖片圓角半徑    }    var canvas=new LiCanvas('test')    canvas.addDrawImageTask(bg)  //添加繪圖任務,并沒有立即進行繪圖    canvas.draw(()=>{       console.log("繪制完成")    }) </script></body>    ...

•繪制多圖

可以連續多次調用addDrawImageTask(image),也可以傳圖一個數組  

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var img1={        src:"http://*****.com/***.png",        x:0,        y:0,        width:1563,        height:1180,        borderRadius:0    }    var img2={            src:"http://*****.com/***.png",            x:0,            y:0,            width:1563,            height:1180,            borderRadius:0     }    var imgs=[        {             src:"http://*****.com/***.png",             x:0,             y:0,             width:100,             height:100,             borderRadius:0        },        {             src:"http://*****.com/***.png",             x:0,             y:0,             width:100,             height:100,             borderRadius:0        }    ]    var canvas=new LiCanvas('test')    canvas.addDrawImageTask(img1)    canvas.addDrawImageTask(img2)   //多次調用實現多圖繪制    canvas.addDrawImageTask(imgs)   //直接傳入一個數組也可以實現多圖繪制    canvas.draw(()=>{       console.log("繪制完成")    }) </script></body>    ...

•繪制圓角或圓形圖片

只需要設置borderRadius即可  

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var img1={        src:"http://*****.com/***.png",        x:0,        y:0,        width:100,        height:100,        borderRadius:50  //設置圓角半徑,當圓角半徑為正方形邊長一半時,就是一個圓形了    }    var canvas=new LiCanvas('test')    canvas.addDrawImageTask(img1)    canvas.draw(()=>{       console.log("繪制完成")    }) </script></body>    ...

繪制文字

•繪制一段文字

調用addDrawTextTask(text,style)

text:要繪制的文字

style:文字樣式,包括 x:文字繪制起始位置左上角坐標x

   y:文字繪制其實位置左上角坐標y

   width:文字一行的寬度,超出會自動進行換行

   fontSize:文字大小,整數,單位為px

   fontWeight:文字粗細bold、bolder等或者400,500,600...同css的font-weight

   fontFamily:文字字體,同css

   lineHeight:行高,整數,單位px

   color:顏色

   marginBottom:如果有多段文字,還可以指定段落之間的距離

文字繪制,同樣是異步的,知道調用draw(callback)才真正進行繪制

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var canvas=new LiCanvas('test')   canvas.addDrawTextTask("要繪制的文字",{           x:110,           y:496,           width:1340,           fontSize:54,           fontWeight:'bolder',           fontFamily:"PingFangSC-Regular,'Microsoft YaHei',SimSun,Arial,'Helvetica Neue',sans-serif",           lineHeight:70,           color:'#1a1a1a',           marginBottom:40   })    canvas.draw(()=>{          console.log("繪制完成")       }) </script></body>    ...

•繪制多段文字

方法1:反復調用addDrawTextTask(text,style),同上

方法2:text可以傳入一個數組,可以共用style

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var canvas=new LiCanvas('test')   canvas.addDrawTextTask(["要繪制的文字段落1","要繪制的文字段落2"],{           x:110,           y:496,           width:1340,           fontSize:54,           fontWeight:'bolder',           fontFamily:"PingFangSC-Regular,'Microsoft YaHei',SimSun,Arial,'Helvetica Neue',sans-serif",           lineHeight:70,           color:'#1a1a1a',           marginBottom:40   })    canvas.draw(()=>{          console.log("繪制完成")       }) </script></body>    ...

其中style也可以在對象實例化的時候傳入一個默認值,避免反復設置一些共用的style

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var canvas=new LiCanvas('test',{       fontStyle:{           fontSize:20,           fontFamily:"PingFangSC-Regular,'Microsoft YaHei',SimSun,Arial,'Helvetica Neue',sans-serif",           lineHeight:70,           color:'#1a1a1a',           marginBottom:40       }   })   canvas.addDrawTextTask("要繪制的文字段落1",{           x:110,           y:496,           width:1340,   })   canvas.addDrawTextTask("要繪制的文字段落2",{              x:110,              y:696,              width:1340,      })    canvas.draw(()=>{          console.log("繪制完成")       }) </script></body>    ...

如果多段文字中,有一段的文字需要設置不同的樣式,也可以單獨指定樣式,如下, 是不是很靈活~

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var canvas=new LiCanvas('test',{       fontStyle:{           fontSize:20,           fontFamily:"PingFangSC-Regular,'Microsoft YaHei',SimSun,Arial,'Helvetica Neue',sans-serif",           lineHeight:70,           color:'#1a1a1a',           marginBottom:40       }   })   canvas.addDrawTextTask([{       text:"要繪制的段落文字1",       fontSize:60   },"要繪制的文字段落2","要繪制的文字段落3"],{           x:110,           y:496,           width:1340,   })   canvas.draw(()=>{          console.log("繪制完成")   }) </script></body>    ...

保存下載圖片

•下載圖片

下載為png圖片:saveToPng("文件名")

下載為jpeg圖片:saveToJpeg("文件名")

下載為gif圖片:saveToGif("文件名")

注意:下載圖片必須在draw()的回調函數中調用才可以生效

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><script> var bg={        src:"http://***.jpg",        x:0,        y:0,        width:1563,        height:1180,        borderRadius:0    }    var canvas=new LiCanvas('test')    canvas.addDrawImageTask(bg)    canvas.draw(()=>{       canvas.saveToPng("li-canvas")    }) </script></body>    ...

•獲取圖片數據

有時候,我們并不想下載圖片,比如在微信瀏覽器中,我們其實是希望用戶長按圖片保存,此時,我們希望canvas合成的圖片數據,插入到img的src中

調用:getImageData()可以獲取合成的圖片數據  

...    <script src="../dist/li-canvas.js"></script>    ...<body><canvas id="test" width="1563" height="1180" style="width: 782px;height: 590px;border: 1px solid red"></canvas><img src="./bg.jpg" id="img" ><script> var bg={        src:"http://***.jpg",        x:0,        y:0,        width:1563,        height:1180,        borderRadius:0    }    var canvas=new LiCanvas('test')    canvas.addDrawImageTask(bg)    canvas.draw(()=>{       var src=canvas.getImageData()       document.getElementById('img').src=src    }) </script></body>    ...

github地址: github.com/501351981/l…  

總結

以上所述是小編給大家介紹的HTML5中通過li-canvas輕松實現單圖、多圖、圓角圖繪制,單行文字、多行文字等,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
中文字幕亚洲国产| 精品成人久久av| 午夜一区二区三区| 日韩视频一区在线观看| 日韩精品大片| 亚洲国产午夜精品| 日韩欧美综合视频| 中文字幕欧美人妻精品一区蜜臀| 亚洲.国产.中文慕字在线| 在线三级av| 免费视频中文字幕| 欧美日韩综合高清一区二区| 亚洲视频色图| 伊人网站在线| 日韩在线视频精品| 日韩你懂的电影在线观看| 国产免费一级| 日韩精品在线观看视频| 一区二区视频在线| 欧美日韩国产在线观看| 91精品国产综合久久精品| 欧美一级在线观看| 午夜国产福利一区二区| 国产91久久久久| 亚洲乱码视频| 一区二区不卡视频| 在线中文免费视频| 91精品在线观看入口| 亚洲免费观看视频| 欧美日韩中文另类| 97最新国自产拍视频在线完整在线看 | 一区二区视频国产| 中文字幕国产亚洲| 日本熟女一区二区| 国产午夜精品全部视频播放| 日韩欧美中文字幕视频| 久久久99免费| 国产aa精品| 日韩久久精品网| 中文 欧美 日韩| 欧美性极品xxxx做受| 国产无套粉嫩白浆在线2022年| 日韩精品视频在线播放| 久草视频观看| 国产欧美日韩在线看| 国产绿帽一区二区三区| 日韩欧美一卡二卡| 国产一二三视频| 欧美一级搡bbbb搡bbbb| 中文精品电影| 亚洲3区在线| 亚洲免费看av| 日韩 欧美 综合| 国产日韩在线视频| 日韩中文字幕网| 国产午夜精品久久| 中文字幕在线观看亚洲| 国产h片在线观看| 亚洲一区中文字幕在线| 日韩中文字幕观看| 欧美三级一区二区三区| 99视频在线看| 中文字幕在线观看欧美| 国产绿帽一区二区三区| av免费观看国产| 欧美日韩中文字幕精品| 中文字幕欧美日韩在线| 一区二区高清在线| 亚洲综合视频一区| 免费在线播放av| 国自产拍在线网站网址视频| 樱花草www在线| 中文在线а√在线8| 92久久精品| 日韩午夜一区| 中文字幕亚洲二区| 91麻豆精品在线| 中文字幕一区二区三区精品| 欧美日韩综合高清一区二区 | 亚洲一区导航| 精品无人国产偷自产在线| 国产午夜精品全部视频播放| 久久精品国产91精品亚洲| 免费看ww视频网站入口| 日韩精品视频中文字幕| 91精品国产色综合久久久蜜香臀 | 久久99精品国产| 91精品国产综合久久香蕉最新版| 成人欧美亚洲| 欧美日韩综合色| 在线视频观看日韩| 不卡视频一区二区三区| 91九色在线播放| 久久久91精品国产| 久久久综合精品| 中文字幕伊人| 一级片免费网站| 日韩精品视频在线免费观看 | 久久香蕉av| 亚洲素人一区二区| 欧美日韩尤物久久| 一区二区不卡视频在线观看| 国产在线不卡一区| 麻豆一区二区99久久久久| 国产小视频在线观看| 国产欧美日韩在线| 欧美日韩亚洲综合| 日韩欧美一级在线播放| 97国产视频| 在线视频一区二区三区在线播放 | 国产午夜精品全部视频播放| 亚洲三级欧美| 伊人国产视频| 日本a级黄色| 亚洲а∨精品天堂在线| 日韩在线观看视频一区| 一级片免费网站| 国产在线不卡av| 精品人妻一区二区免费视频| 欧美亚洲另类制服自拍| 欧美三级在线看| 91精品在线观| 一区二区三区在线播放视频| 亚洲欧洲国产视频| 日韩精品首页| 精品国产不卡一区二区| 中文字幕在线看视频国产欧美| 国产亚洲短视频| 欧美三级视频在线| 中文字幕 日韩 欧美| 国产一级粉嫩xxxx| 日韩国产在线观看一区| 欧美日韩国产在线看| 精品在线观看一区| 欧美日韩视频网站| 国产欧美综合在线观看第十页| 欧美一级在线观看| 天天综合天天| 日韩在线中文视频| 精品欧美不卡一区二区在线观看| 首页国产欧美久久| 日韩中文字幕视频在线观看| 精品亚洲综合| 欧美成人精品在线| 日韩在线视频一区二区三区| 国产高清精品在线观看| 欧美日韩国产亚洲一区| 日韩中文字幕在线视频播放| 精品国产99久久久久久| 欧美日韩国产高清一区| 在线手机中文字幕| 国产日韩在线视频| 日韩欧美一级在线播放| 国产三级在线播放| 久久精品99久久久久久久久| 精品日韩一区二区三区免费视频| 日韩 国产 一区| 91精品国产综合久久久久| 国产日产一区二区三区 | 日韩欧美三级在线| 日本亚洲欧美| 日韩在线视频一区| 日韩高清不卡在线| 亚州黄色一级| 精品久久九九| 精品一区二区在线观看视频| 色欧美日韩亚洲| 国产真实乱子伦精品视频| 国产在线第一页| 日韩一级中文字幕| 久久精品99久久久久久久久| 欧美日韩国产中字 | 久久99久久久欧美国产| 日韩精品高清不卡| 中文精品视频| 一区二区91| 日韩欧美国产不卡| 国产欧美日韩视频在线| 国产h片在线观看| 不卡专区在线| 亚洲va久久久噜噜噜久久| 日韩影院二区| 日韩欧美在线第一页| 亚洲福利在线视频| 深夜福利亚洲| 日韩精品在线第一页| 日韩精品在线播放| 欧美日韩精品欧美日韩精品| 欧美日韩精品电影| 精品熟女一区二区三区| 亚洲一二三不卡| 精品国产99久久久久久| 国产欧美日韩视频在线| 国产欧美日韩在线| 日本亚洲欧美三级| 欧美日韩免费高清| 91精品国产91久久久久久三级| av免费看在线| 日韩欧美中文字幕在线观看| 欧美另类久久久品| 国产三级免费观看| 国产欧美日韩在线看| 国产免费久久久| 免费日韩精品中文字幕视频在线| 国产午夜精品全部视频播放| 久草中文在线观看| 久久精品网站免费观看| 久久精品视频免费看| 国产欧美日韩在线视频| www.老鸭窝.com| 欧美日韩国产区| 亚洲视频电影在线| 91精品999| 久久精品欧美日韩精品| 亚洲羞羞网站| 日韩不卡在线播放| 欧美日韩国产在线| 亚洲人线精品午夜| 日韩中文首页| 男人的天堂网av| 欧美日韩国产一二| 日韩欧美国产网站| 亚洲第一中文字幕| av午夜在线| 亚洲第一香蕉网| 国产一区深夜福利| 国产婷婷在线观看| www.狠狠干| 刘玥91精选国产在线观看| 日韩精品丝袜在线| 中文精品电影| 在线观看一区| 精品国产乱码久久久久久蜜臀| 欧美日韩精品免费在线观看视频| 欧美变态tickling挠脚心| 欧美 亚洲 精品 三区| 精品人妻一区二区免费视频| www.日韩免费| 欧美中文字幕在线| 精品激情国产视频| 日韩一级免费视频| av免费在线观看网址| 欧美日韩亚洲国内综合网| 人妻一区二区三区免费| 极品久久久久久| 国产91久久久久蜜臀青青天草二| 亚洲 欧美 日韩系列| 999精品网| 日韩欧美在线影院| 欧美三级免费观看| 日韩字幕在线观看| 免费在线亚洲| 视频一区不卡| 不卡一二三区| 在线视频不卡国产V| 日韩欧美中文在线视频| 亚洲开心激情| 国产日韩中文字幕| 在线资源av| 91精品国产免费| 二区中文字幕| 91精品久久久久久久久| 在线观看免费国产成人软件| 欧美日韩亚洲综合| 日韩欧美综合视频| 日本a口亚洲| 国产日韩第一页v| 精人妻一区二区三区| 亚洲免费专区| 国产福利久久久| 一区二区不卡在线播放| 国产最新在线| 久久久91精品国产| 欧美综合精品| 国产中文伊人| 午夜黄色小视频| 成人h视频在线观看| 精品国产免费视频| 日韩精品首页| 国产午夜在线观看| 亚洲成a人片在线www| 欧美三级日韩三级| 欧美日韩国产页| 国产亚洲欧美色| 日韩精品免费观看视频| 亚洲一级特黄| 国产黄色精品| 欧美日韩亚洲综合| 一级片免费在线| 精品日韩av| 天天综合天天| 国产欧美自拍一区| 国产一区成人| 日韩激情一区| 亚洲欧美日本另类| 日韩欧美在线网址| 午夜影院在线观看欧美| 国产午夜精品久久| 日韩一级二级三级| 国产99对白在线播放| 精品人妻一区二区免费视频| 免费国产成人看片在线| 日韩精品福利视频| 国产欧美日韩综合精品| 久久精品久久精品亚洲人| 欧美日韩999| 黄色精品在线观看| 久久99蜜桃精品久久久久小说| 中文字幕成人乱码在线电影| 正在播放日韩精品| 国产成人日日夜夜| 亚洲综合日韩中文字幕v在线| 91久久精品视频| 日韩a一区二区| 亚洲美女视频一区| 日韩字幕在线观看| 精品欧美日韩精品| 日韩在线三区| h片精品在线观看| 国产一区不卡精品| 亚洲国产午夜精品| 久久99精品国产| 精品一区二区在线观看视频| 日韩精品欧美| 精品国自产在线观看| 中文字幕欧美国内| 午夜少妇久久久久久久久| 九九九精品视频| 午夜一区二区三区| 亚洲福利在线视频| 黄色资源在线观看| 91麻豆精品国产91久久久使用方法 | 日本国产一区| 午夜少妇久久久久久久久| 欧美自拍一区| 国产日产一区二区三区| 欧美日韩国产一级片| 日韩一级网站| 免费在线观看国产黄| 欧美日韩亚洲第一| 国产成人一二三区| 国产日韩av一区| 久久久99免费| 韩国av一区二区| 国产亚洲福利| 日韩精品乱码av一区二区| 亚洲国产无线乱码在线观看| 欧美日韩中文字幕在线视频| 亚洲黄色www| 精品乱人伦一区二区三区| 最近中文av字幕在线中文| 亚洲中文字幕在线一区| 91久久久久久久久| 欧美三级三级三级爽爽爽| 国产传媒久久久| a在线观看免费视频| 日韩 国产 一区| 亚洲视频 中文字幕| 中文字幕在线观看欧美| 影音先锋中文字幕在线观看| 国产卡1卡2卡三卡在线| 中文字幕 日韩 欧美| 亚洲国产福利视频| 亚洲一区资源| 久久电影国产免费久久电影| 91精品久久久久久久91蜜桃| 久久久综合av| 日韩午夜黄色| 国产高清精品在线观看| wwwww亚洲| 中文av字幕一区| 久久中文免费视频| 日韩久久精品成人| 亚洲 欧美 精品| 日韩精品一区二区三区视频播放| 精品成人久久av| 日韩视频在线观看一区| 蜜桃久久久久| 一区二区日韩视频| 中文字幕欧美日韩在线| 国产欧美日韩高清| 日韩视频免费直播| 国产欧美日韩亚洲| 日韩精品视频在线观看免费| 久久精品国产2020观看福利| 日韩欧美综合| 日韩欧美国产免费| 欧美亚洲综合视频| 国产绿帽一区二区三区| 欧美日韩在线播放三区四区| 欧美中日韩在线| 亚洲三级av| 成人欧美亚洲| 91精品国产入口| 日韩欧美专区在线| 欧美日韩性视频一区二区三区| 一区二区欧美国产| 精品欧美日韩精品| 日韩影院二区| 国产一级片网站|