<div class="qr_code_share_Container">
<div class="groupCodeBox">
<div class="groupInfoBox">
<div class="groupImgBox">
{{if data.photoTitle == '羣聊'}}
<img src="{{data.groupAvatar}}" onerror="this.src='__STATIC__/images/default_portrait.png'" alt="頭像">
{{else /}}
<img src="{{data.avatar}}" onerror="this.src='__STATIC__/images/default_portrait.png'" alt="頭像">
{{/if}}
<p>{{data.photoTitle}}</p>
</div>
<span>{{data.name}}</span>
</div>
<div class="codeImgBox">
<img class="myCode" src="{{data.qrCode}}" />
</div>
<p class="tipsP">{{data.desc}}</p>
</div>
<div class="btnBox">
<div class="btn delete" id="shageCode">分享二維碼</div>
</div>
</div>
<div class="qr_code_share_open" id="qr_code_share_open">
<div class="qr_code_share_imgBox">
<div class="qr_code_share_img">
<img id="code_img" src="" alt="">
</div>
</div>
<span class="qr_code_share_ft">長按圖片保存或者分享</span>
</div>
</div>
this.initPage = () => {
ajax.get(
{
groupId,
scene: 1
},
"/cloud/api/api/cloudQRcodeInfo",
function(res) {
if (res.code == 1) {
$("#title").text(res.data.title)
$(".qr_code_share_Container").html(template("qr_code_share", { data: res.data }))
createImg()
} else {
showErrorMsg(res.msg || "請重試")
}
}
)
}
const createImg = () => {
let photo = $(".groupImgBox img").attr("src")
let qrcode = $(".codeImgBox img").attr("src")
let srcArr = [{ src: photo }, { src: qrcode }]
const handleImgSrc = data => {
return new Promise((resolve, reject) => {
let img = new Image()
let canvas = document.createElement("CANVAS")
let ctx = canvas.getContext("2d")
img.crossOrigin = "Anonymous"
img.src = data
img.onload = function() {
canvas.height = img.height
canvas.width = img.width
ctx.drawImage(img, 0, 0)
let dataURL = canvas.toDataURL("image/png")
canvas = null
resolve({
code: 1,
data: dataURL
})
}
img.onerror = function() {
resolve({
code: 0,
data: ""
})
}
})
}
Promise.all(srcArr.map(item => handleImgSrc(item.src))).then(result => {
if (!result[0].code) {
$(".groupImgBox img").attr("src", "/application/cloud/view/static/images/fail.jpg")
}
if (!result[1].code) {
$(".codeImgBox img").attr("src", "/application/cloud/view/static/images/fail.jpg")
}
let shareElem = $(".groupCodeBox")
let width = shareElem.width()
let height = shareElem.height()
let left = shareElem.offset().left
let top = shareElem.offset().top
let canvas = document.createElement("canvas")
let scale = 2
canvas.width = width * scale
canvas.height = height * scale
let hb = canvas.getContext("2d")
hb.scale(scale, scale)
hb.translate(-left, -top)
if (result[0].code && result[1].code) {
$(".groupImgBox img").attr("src", result[0].data)
$(".codeImgBox img").attr("src", result[1].data)
html2canvas(document.querySelector(".groupCodeBox"), {
scale: scale,
useCORS: true,
canvas: canvas,
allowTaint: true,
width: width,
height: height
}).then(function(canvasHtml) {
canvasHtml.mozImageSmoothingEnabled = false
canvasHtml.webkitImageSmoothingEnabled = false
canvasHtml.msImageSmoothingEnabled = false
canvasHtml.imageSmoothingEnabled = false
let ImgUrl = canvasHtml.toDataURL()
$("#code_img").attr("src", ImgUrl)
$("#code_img").css("width", `${width}px`)
})
} else {
html2canvas(document.querySelector(".groupCodeBox"), {
scale: scale,
useCORS: true,
canvas: canvas,
allowTaint: true,
width: width,
height: height
}).then(function(canvasHtml) {
canvasHtml.mozImageSmoothingEnabled = false
canvasHtml.webkitImageSmoothingEnabled = false
canvasHtml.msImageSmoothingEnabled = false
canvasHtml.imageSmoothingEnabled = false
let ImgUrl = canvasHtml.toDataURL()
$("#code_img").attr("src", ImgUrl)
$("#code_img").css("width", `${width}px`)
})
}
})
}