91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用vue怎么在HTML頁面中生成圖片

發布時間:2021-03-20 15:56:57 來源:億速云 閱讀:418 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關使用vue怎么在HTML頁面中生成圖片,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

生成帶logo的二維碼

用 vue_qrcodes 生成帶logo的二維碼

安裝

npm install vue_qrcodes -- save

使用

<!--部分html代碼-->
<qrcode :url="qrcodeUrl"
 :iconurl="iconurl"
 :wid="298"
 :hei="278"
 :imgwid="100"
 :imghei="100">
</qrcode>

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

問題來了:二維碼出現了,但是二維碼和logo大小并不是你想要,無法自適應。那就需要我們重置二維碼和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轉化為base64圖片

html轉化為canvas中我選用組件 html2canvas

yarn add html2canvas

import html2canvas from 'html2canvas'

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

使用vue怎么在HTML頁面中生成圖片 

js調用函數:

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

結果如圖:

使用vue怎么在HTML頁面中生成圖片 

頁面轉化成了圖片,但是二維碼沒有展示出來,控制臺報錯:

使用vue怎么在HTML頁面中生成圖片 

除二維碼其他部分已經轉化為圖片,二維碼不顯示,原因有兩種可能:

轉化時二維碼還沒有加載完成

轉化二維碼的過程中報錯了

首先嘗試了nextTick

使用 nextTick 將回調延遲到下次DOM更新循環之后執行

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

使用vue怎么在HTML頁面中生成圖片 

發現二維碼出來了,但是二維碼的大小不對,并且控制臺還是存在報錯。雖然問題沒有完全解決,但是二維碼出現了。可以證明二維碼不展示的原因是,轉化時二維碼沒有加載完成。

再嘗試使用setTimeout

使用 setTimeout 將回調延遲到指定時間之后執行

// 二維碼地址
this.qrcodeUrl = data.data.inviteCodeAddress 
setTimeout(()=>{
 // 調用html轉化canvas函數
 this.htmlToCanvas(); 
}, 200)

查看效果:

使用vue怎么在HTML頁面中生成圖片 

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

頁面正常,控制臺沒有報錯,可是logo沒有展示出來。

logo地址是:

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

項目在本地啟動,可能存在跨域問題。

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

以上就是使用vue怎么在HTML頁面中生成圖片,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长寿区| 万盛区| 诸暨市| 德保县| 博罗县| 武义县| 富源县| 伊川县| 金秀| 华安县| 思茅市| 临安市| 芦山县| 桃园县| 古田县| 乐陵市| 白玉县| 永寿县| 阿克苏市| 滨海县| 兰溪市| 温州市| 女性| 清徐县| 贡嘎县| 彝良县| 万州区| 原阳县| 上虞市| 于田县| 苍梧县| 太谷县| 察雅县| 乌兰浩特市| 临颍县| 手机| 扶绥县| 教育| 宜兴市| 商洛市| 阳原县|