이전 버전에서는 URL을 이용해 QR코드를 생성한 후 다른 사진과 결합해 나만의 사진을 만들어달라는 요청이 있었습니다.
구현 아이디어는 이렇습니다이미지를 생성한 후 이미지가 매우 흐릿하다는 것을 알았습니다. 해결 방법은 캔버스를 두 번 확장하고 다른 매개변수를 두 배로 과장하는 것입니다.
jr-qrcode npm install --save jr-qrcode를 사용하여 이 패키지를 설치할 수 있습니다.
이 기능은 img의 src에서 사용할 수 있도록 텍스트를 data:base64로 변환하는 것입니다.
코드는 다음과 같습니다
import React, { Component } from 'react'const qrcode = require('jr-qrcode')const loadImg = (src) => { const paths = Array.isArray(src) ? src : [src]; ]; paths.forEach((경로) => { promise.push(new Promise((해결, 거부) => { let img = new Image(); img.crossOrigin = Anonymous; img.onload = () => { img.onerror = (err) => { console.log('이미지 로딩 실패) ') } })) }); return Promise.all(promise);}const getImageData = (url, src) => { const imgsrc = qrcode.getQrBase64(url) let canvas = document.createElement('canvas') const width = document.documentElement.clientWidth const height = document.documentElement.clientHeight canvas.width = width*2 canvas.height = height*2 let ctx = canvas.getContext(2d) loadImg([imgsrc, src]).then(([img1, img2]) => { ctx.drawImage(img2, 0, 0, 너비*2, 높이*2) ctx.drawImage(img1, 너비-80, 높이*2-220, 200, 160) ctx.fillStyle = 'rgba (0,0,0,0.3)'; ctx.fillRect(너비-80, 높이*2-60, 200, 40); ctx.save() ctx.font=28px Arial ctx.fillStyle = '#fff'; ctx.fillText('QR 코드를 식별하려면 길게 누르세요.', 너비-80, 높이*2-30, 200, 160) 이미지URL = canvas.toDataURL(이미지/png) document.getElementById('mix_img').setAttribute('src',imageURL) })}내보내기 기본 클래스 QRcode 확장 Component { render() { const { url , picSrc} = this.props getImageData(url,picSrc) return ( < div> <img </div> ) }}위의 내용은 이 기사의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 또한 모든 분들이 VeVb Wulin Network를 지지해 주시길 바랍니다.