Wir möchten ein Bild zeichnen, das ein Hintergrundbild und einen dynamisch generierten QR-Code enthält. Die Voraussetzung ist, dass das Hintergrundbild eine statische Ressource des Projekts selbst ist und der QR-Code dynamisch vom Server generiert wird nicht unter demselben Domainnamen.
Lösung: Leiten Sie alle Bilder auf denselben Domainnamen um:
let count = 0;let bgImg = document.creatElement('img');let qrImg = document.creatElement('img');bgImg.src = restartUrl('x.png');qrImg.src = restartUrl( 'y .png');[bgImg, qrImg].forEach((e) => { e.onload = () => { count ++; if (count === 2) { DrawerImg(bgImg, qrImg); } }})function restartUrl (url) { return 'https://xxx/view?fileUrl=' + encodeURIComponent(url);}function DrawerImg (imgContent, qrContent, scaleBy = 2) { let {bgImgW, bgImgH} = {375, 800}; {qrx, qry, qrw, qrh} = {20, 700, 50, 50}; let Canvas = document.createElement('canvas'); let ctx = Canvas.getContext(2d); Canvas.width = bgImgW * scaleBy; Canvas.height= bgImgH * scaleBy ctx.drawImage(imgContent, 0, 0, bgImgW * ScaleBy, bgImgH * ScaleBy); ctx.drawImage(qrContent, qrx * ScaleBy, qrw * ScaleBy, qrh * ScaleBy); Canvas.toDataURL(); document.body.appendChild(nodeI)}Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Ich hoffe auch, dass jeder das VeVb Wulin Network unterstützt.