字符串生成二维码并且批量打包下载
所需依赖包
qrcode
二维码生成的插件库jszip
用来打包压缩的一个库file-saver
文件保存下载的插件库
- qrcode 能直接将字符串生成二维码图片的 base64 格式
- 将二维码图片的 base64 整合放入到 JSZip 对象里
- 最后生成 zip 文件并通过 file-saver 下载到本地
1.头部引入
import JSZip from "jszip";
import FileSaver from "file-saver";
import QRCode from "qrcode";
2.函数方法
/**
* 将字符串生成二维码并且转成base64
* @param {要生成二维码的字符串} text
* @returns
*/
function textQrcodeToBase64(text) {
return new Promise((res, rej) => {
QRCode.toDataURL(
text, // 二维码字符串
{
type: "image/png", // 生成dataurl图片格式
width: 200, // 二维码宽度
quality: 0.8, // 质量
margin: 1, // 白边大小
color: {
dark: "#000", // 暗色颜色
light: "#fff", // 亮色颜色
},
},
function (err, dataUrl) {
if (err) rej(err);
res(dataUrl.substring(22));
// substring(22)是去掉图片base64头
}
);
});
}/**
* 将base64字符串以png格式装进jszip, 然后下载保存到本地
* @param {Array} data {value: base64字符串, name: 二维码的名字}
*/
function dataUrlZip(data) {
const zip = new JSZip();
for (const item of data) {
const { value, name } = item;
zip.file(name + ".png", value, {
base64: true,
});
}// 以二进制形式保存、并且通过file-saver下载到本地
zip.generateAsync({ type: "blob" }).then(function (content) {
FileSaver.saveAs(content, "qrcodes.zip");
});
}
3.使用
// 注意: textQrcodeToBase64返回对象是promise
async () => {
// 二维码字符串相关的数据
const qrStrArr = [
{ name: "baidu", url: "http://www.baidu.com" },
{ name: "npm", url: "https://www.npmjs.com/" },
];
// 生成下载数据
const data = https://www.it610.com/article/[];
for (const item of qrStrArr) {
const base64 = await textQrcodeToBase64(item.url);
data.push({
name: item.name,
value: base64,
});
}// 下载
dataUrlZip(data);
};
推荐阅读
- 一起来学习C语言的字符串转换函数
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- ssh生成公钥秘钥
- 字符串拼接成段落,换行符(\n)如何只执行n-1次
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- C语言的版本比较
- 20180531去二维火学习完给股东的分享
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了