真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用vue怎么在HTML頁(yè)面中生成圖片

本篇文章給大家分享的是有關(guān)使用vue怎么在HTML頁(yè)面中生成圖片,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、綏化網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為綏化等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

生成帶logo的二維碼

用 vue_qrcodes 生成帶logo的二維碼

安裝

npm install vue_qrcodes -- save

使用





// 部分js代碼
import qrcode from 'vue_qrcodes'
//...省略其他代碼
components: {
 qrcode
 }

問(wèn)題來(lái)了:二維碼出現(xiàn)了,但是二維碼和logo大小并不是你想要,無(wú)法自適應(yīng)。那就需要我們重置二維碼和logo的樣式。

.logoimg {
 height: 100px !important;
 width: 100px !important;
 margin-top: -50px !important;
 margin-left: -50px !important;
 }
#qrcode {
 margin-top: 20px;
 img {
 height: 278px !important;
 width: 298px !important;
 }
 }

html轉(zhuǎn)化為base64圖片

html轉(zhuǎn)化為canvas中我選用組件 html2canvas

yarn add html2canvas

import html2canvas from 'html2canvas'

為了防止頁(yè)面有閃屏我用了兩個(gè)div,一個(gè)存放原來(lái)的dom,一個(gè)存放canvas的生成的圖片,再v-if控制展示的元素。

使用vue怎么在HTML頁(yè)面中生成圖片 

js調(diào)用函數(shù):

htmlToCanvas() {
 html2canvas(this.$refs.bill, {})
 .then((canvas) => {
 let imageUrl = canvas.toDataURL('image/png'); // 將canvas轉(zhuǎn)成base64圖片格式
 this.canvasImageUrl = imageUrl;
 this.isDom = false;
 });
}
// 二維碼地址
this.qrcodeUrl = data.data.inviteCodeAddress
// 調(diào)用html轉(zhuǎn)化canvas函數(shù)
this.htmlToCanvas();

結(jié)果如圖:

使用vue怎么在HTML頁(yè)面中生成圖片 

頁(yè)面轉(zhuǎn)化成了圖片,但是二維碼沒(méi)有展示出來(lái),控制臺(tái)報(bào)錯(cuò):

使用vue怎么在HTML頁(yè)面中生成圖片 

除二維碼其他部分已經(jīng)轉(zhuǎn)化為圖片,二維碼不顯示,原因有兩種可能:

轉(zhuǎn)化時(shí)二維碼還沒(méi)有加載完成

轉(zhuǎn)化二維碼的過(guò)程中報(bào)錯(cuò)了

首先嘗試了nextTick

使用 nextTick 將回調(diào)延遲到下次DOM更新循環(huán)之后執(zhí)行

// 二維碼地址
this.qrcodeUrl = data.data.inviteCodeAddress 
this.$nextTick(() => {
 // 跳用html轉(zhuǎn)化canvas函數(shù)
 this.htmlToCanvas(); 
 })

使用vue怎么在HTML頁(yè)面中生成圖片 

發(fā)現(xiàn)二維碼出來(lái)了,但是二維碼的大小不對(duì),并且控制臺(tái)還是存在報(bào)錯(cuò)。雖然問(wèn)題沒(méi)有完全解決,但是二維碼出現(xiàn)了??梢宰C明二維碼不展示的原因是,轉(zhuǎn)化時(shí)二維碼沒(méi)有加載完成。

再嘗試使用setTimeout

使用 setTimeout 將回調(diào)延遲到指定時(shí)間之后執(zhí)行

// 二維碼地址
this.qrcodeUrl = data.data.inviteCodeAddress 
setTimeout(()=>{
 // 調(diào)用html轉(zhuǎn)化canvas函數(shù)
 this.htmlToCanvas(); 
}, 200)

查看效果:

使用vue怎么在HTML頁(yè)面中生成圖片 

注:setTimeout是我目前能想到延遲加載方法。各位大佬們,如果這個(gè)有更好的方法解決上面的問(wèn)題,麻煩給留言,在此謝過(guò)。

頁(yè)面正常,控制臺(tái)沒(méi)有報(bào)錯(cuò),可是logo沒(méi)有展示出來(lái)。

logo地址是:

iconurl: 'https://static.daojia.com/assets/project/tosimple-pic/LOGO_1576564983633.png',

項(xiàng)目在本地啟動(dòng),可能存在跨域問(wèn)題。

htmlToCanvas() {
 html2canvas(this.$refs.bill, {
 useCORS: true // 解決圖片跨域問(wèn)題
 }).then((canvas) => {
 // 將canvas轉(zhuǎn)成base64圖片格式
 let imageUrl = canvas.toDataURL('image/png'); 
 this.canvasImageUrl = imageUrl;
 this.isDom = false;
 }).catch((e) => console.log(e));
 }

以上就是使用vue怎么在HTML頁(yè)面中生成圖片,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享名稱:使用vue怎么在HTML頁(yè)面中生成圖片
文章來(lái)源:http://weahome.cn/article/gchoie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部