@tarojs/plugin-mini-ci
Version:
Taro 小程序端构建后支持CI(持续集成)的插件
71 lines • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateQrcodeImageFile = exports.printQrcode2Terminal = exports.readQrcodeImageContent = void 0;
/* eslint-disable no-console */
const node_fs_1 = require("node:fs");
const axios_1 = require("axios");
const Jimp = require("jimp");
const jsqr_1 = require("jsqr");
const QRCode = require("qrcode");
/**
* 读取出二维码图片中的文本内容
* @param imagePath 图片路径
*/
async function readQrcodeImageContent(imagePath) {
// 网络图片优先用axios获取,避免某些云环境下由于原生fetch对代理支持度不够引起的问题
let imageBuffer;
if (!(0, node_fs_1.existsSync)(imagePath)) {
try {
const response = await (0, axios_1.default)({
method: 'get',
url: imagePath,
responseType: 'arraybuffer',
timeout: 8000
});
imageBuffer = response.data;
}
catch (error) {
console.log(`axios获取图片失败: ${error.message}`);
}
}
return new Promise((resolve, reject) => {
Jimp.read(imageBuffer || imagePath, function (err, image) {
if (err) {
reject(err);
return;
}
// @ts-ignore
const scanData = (0, jsqr_1.default)(image.bitmap.data, image.bitmap.width, image.bitmap.height);
if (scanData) {
resolve(scanData.data);
}
else {
reject(new Error('扫描器 jsqr 未能识别出二维码内容'));
}
});
});
}
exports.readQrcodeImageContent = readQrcodeImageContent;
/**
* 将文本内容转换成二维码输出在控制台上
* @param content
*/
async function printQrcode2Terminal(content) {
const terminalStr = await QRCode.toString(content, { type: 'terminal', small: true });
// eslint-disable-next-line no-console
console.log(terminalStr);
}
exports.printQrcode2Terminal = printQrcode2Terminal;
/**
* 生成二维码图片到指定目录
* @param content
* @param path
*/
async function generateQrcodeImageFile(path, content) {
await QRCode.toFile(path, content, {
errorCorrectionLevel: 'L',
type: 'png'
});
}
exports.generateQrcodeImageFile = generateQrcodeImageFile;
//# sourceMappingURL=qrcode.js.map