摘要:上个版本街道一个需求,使用生成一个二维码,然后和另外一张图片合成一张图拍你,实现思路是这样的使用将生成供使用然后使用将两张图合成一张图片遇到的问题生成图片之后发现图片很模糊,解决办法是将画布扩大两倍,其他参数也夸大两倍就可以了可以使用
上个版本街道一个需求,使用url生成一个二维码,然后和另外一张图片合成一张图拍你,
实现思路是这样的
使用jr-qrcode将url生成data:base64供img使用
然后使用canvas 将两张图合成一张图片
遇到的问题
生成图片之后发现图片很模糊,解决办法是将canvas画布扩大两倍,其他参数也夸大两倍就可以了
jr-qrcode 可以使用npm install --save jr-qrcode 安装这个包
作用就是可以转化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("长按识别二维码", 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 (
)
}
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/96328.html
摘要:无需任何第三方依赖,轻型工具库。绘制海报,生成带的二维码。默认重新编辑最终图片压缩比,默认基础类型参数表示一个图片部分。之间表示一个二维码部分参数类型描述指定为二维码类型要绘制的内容。通过控制边框颜色,默认为默认为容错等级。 canvas_x 无需任何第三方依赖,轻型工具库。canvas绘制海报,生成带logo的二维码。也可生成编辑界面,用户自定义输入,一键生成等等 默认开启图片跨域,...
摘要:最近有个需求是要生成分享海报,让用户可以将图片保存到本地然后分享到朋友圈。本来以为是一个很简单的需求,可是万万没想到,微信会这么坑。 最近有个需求是要生成分享海报,让用户可以将图片保存到本地然后分享到朋友圈。本来以为是一个很简单的需求,可是万万没想到,微信会这么坑。刚开始的思路是这样的: 后台根据小程序传过来的参数获取对应的小程序码,然后与背景图合成之后将base64格式的图片传给小程...
阅读 697·2023-04-26 02:58
阅读 2423·2021-09-27 14:01
阅读 3719·2021-09-22 15:57
阅读 1304·2019-08-30 15:56
阅读 1135·2019-08-30 15:53
阅读 915·2019-08-30 15:52
阅读 824·2019-08-26 14:01
阅读 2266·2019-08-26 13:41
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要