摘要:上個(gè)版本街道一個(gè)需求,使用生成一個(gè)二維碼,然后和另外一張圖片合成一張圖拍你,實(shí)現(xiàn)思路是這樣的使用將生成供使用然后使用將兩張圖合成一張圖片遇到的問(wèn)題生成圖片之后發(fā)現(xiàn)圖片很模糊,解決辦法是將畫(huà)布擴(kuò)大兩倍,其他參數(shù)也夸大兩倍就可以了可以使用
上個(gè)版本街道一個(gè)需求,使用url生成一個(gè)二維碼,然后和另外一張圖片合成一張圖拍你,
實(shí)現(xiàn)思路是這樣的
使用jr-qrcode將url生成data:base64供img使用
然后使用canvas 將兩張圖合成一張圖片
遇到的問(wèn)題
生成圖片之后發(fā)現(xiàn)圖片很模糊,解決辦法是將canvas畫(huà)布擴(kuò)大兩倍,其他參數(shù)也夸大兩倍就可以了
jr-qrcode 可以使用npm install --save jr-qrcode 安裝這個(gè)包
作用就是可以轉(zhuǎn)化text到data:base64 供img的src 使用
代碼如下
import React, { Component } from "react" const qrcode = require("jr-qrcode") const loadImg = (src) => { const paths = Array.isArray(src) ? src : [src]; const promise = []; paths.forEach((path) => { promise.push(new Promise((resolve, reject) => { let img = new Image(); img.crossOrigin = "Anonymous"; img.src = path; img.onload = () => { resolve(img); }; 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, width*2, height*2) ctx.drawImage(img1, width-80, height*2-220, 200, 160) ctx.fillStyle = "rgba(0,0,0,0.3)"; ctx.fillRect(width-80, height*2-60, 200, 40); ctx.save() ctx.font="28px Arial" ctx.fillStyle = "#fff"; ctx.fillText("長(zhǎng)按識(shí)別二維碼", width-80, height*2-30, 200, 160) let imageURL = canvas.toDataURL("image/png") document.getElementById("mix_img").setAttribute("src",imageURL) }) } export default class QRcode extends Component { render() { const { url , picSrc} = this.props getImageData(url,picSrc) return () } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96328.html
摘要:無(wú)需任何第三方依賴,輕型工具庫(kù)。繪制海報(bào),生成帶的二維碼。默認(rèn)重新編輯最終圖片壓縮比,默認(rèn)基礎(chǔ)類(lèi)型參數(shù)表示一個(gè)圖片部分。之間表示一個(gè)二維碼部分參數(shù)類(lèi)型描述指定為二維碼類(lèi)型要繪制的內(nèi)容。通過(guò)控制邊框顏色,默認(rèn)為默認(rèn)為容錯(cuò)等級(jí)。 canvas_x 無(wú)需任何第三方依賴,輕型工具庫(kù)。canvas繪制海報(bào),生成帶logo的二維碼。也可生成編輯界面,用戶自定義輸入,一鍵生成等等 默認(rèn)開(kāi)啟圖片跨域,...
摘要:最近有個(gè)需求是要生成分享海報(bào),讓用戶可以將圖片保存到本地然后分享到朋友圈。本來(lái)以為是一個(gè)很簡(jiǎn)單的需求,可是萬(wàn)萬(wàn)沒(méi)想到,微信會(huì)這么坑。 最近有個(gè)需求是要生成分享海報(bào),讓用戶可以將圖片保存到本地然后分享到朋友圈。本來(lái)以為是一個(gè)很簡(jiǎn)單的需求,可是萬(wàn)萬(wàn)沒(méi)想到,微信會(huì)這么坑。剛開(kāi)始的思路是這樣的: 后臺(tái)根據(jù)小程序傳過(guò)來(lái)的參數(shù)獲取對(duì)應(yīng)的小程序碼,然后與背景圖合成之后將base64格式的圖片傳給小程...
閱讀 574·2023-04-26 02:58
閱讀 2314·2021-09-27 14:01
閱讀 3620·2021-09-22 15:57
閱讀 1182·2019-08-30 15:56
閱讀 1052·2019-08-30 15:53
閱讀 801·2019-08-30 15:52
閱讀 655·2019-08-26 14:01
閱讀 2173·2019-08-26 13:41