排队支付小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

113 lines
3.5 KiB

const app = getApp();
const Crypto = require('./lib/crypto1/crypto');
const Base64 = require('./lib/crypto1/base64');
const IMG_SIZE_TYPE = {
TYPE_WIDTH: (750 / 570) * 100 | 0,
TYPE_HEIGHT: (750 / 900) * 100 | 0,
TYPE_EQUAL: (750 / 750) * 100 | 0
};
module.exports = {
// 是否是本地默认打卡图片
isDefaultRecordImage(imgPath) {
return imgPath && imgPath.startsWith('/img');
},
// 添加图片裁剪参数
addImageCutParam (owidth, oheight, imgPath) {
let ratio = owidth / oheight, width = owidth, height = oheight;
let result = {};
if ((ratio * 100 | 0) >= IMG_SIZE_TYPE.TYPE_WIDTH) {
width = parseInt(oheight * 750 / 570);
imgPath += "?imageView2/1/w/" + width + "/h/" + (height);
result.width = width;
result.height = height;
} else if ((ratio * 100 | 0) <= IMG_SIZE_TYPE.TYPE_HEIGHT) {
height = parseInt(width * 900 / 750);
imgPath += "?imageView2/1/w/" + (width) + "/h/" + height;
result.width = width;
result.height = height;
} else {
imgPath += "?imageView2/1/w/" + (owidth) + "/h/" + (owidth);
result.width = result.height = width;
}
result.imgPath = imgPath;
return result;
},
// 添加图片缩放、裁剪参数
addImageCutParamAli(owidth, oheight, imgPath) {
const MAX_LEN = 4096;
let ratio = owidth / oheight, width = owidth, height = oheight;
imgPath += '?x-oss-process=image';
// 图片宽高大于4096时,需要先进行缩放
if (owidth > MAX_LEN || oheight > MAX_LEN) {
imgPath += `/resize,h_${MAX_LEN},w_${MAX_LEN}`;
// 这里需要重新计算缩放后的图片大小
if (owidth > oheight) {
width = MAX_LEN;
let zoomRatio = width / owidth;
height = parseInt(zoomRatio * oheight);
} else if (owidth < oheight) {
height = MAX_LEN;
let zoomRatio = height / oheight;
width = parseInt(zoomRatio * owidth);
} else {
width = height = MAX_LEN;
}
}
// 裁剪
ratio = width / height;
let result = {};
if ((ratio * 100 | 0) >= IMG_SIZE_TYPE.TYPE_WIDTH) {
width = parseInt(oheight * 750 / 570);
imgPath += `/crop,w_${width},h_${height},g_center`;
result.width = width;
result.height = height;
} else if ((ratio * 100 | 0) <= IMG_SIZE_TYPE.TYPE_HEIGHT) {
height = parseInt(width * 900 / 750);
imgPath += `/crop,w_${width},h_${height},g_center`;
result.width = width;
result.height = height;
} else {
imgPath += `/crop,w_${width},h_${width},g_center`;
result.width = result.height = width;
}
result.imgPath = imgPath;
return result;
},
getMultipartParams() {
let policyText = {
"expiration": "2020-01-01T12:00:00.000Z", // 设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
"conditions": [
["content-length-range", 0, 1048576000] // 设置上传文件的大小限制
]
};
let policyBase64 = Base64.encode(JSON.stringify(policyText));
let bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, app.globalData.config.aliAccessKey, { asBytes: true }) ;
let signature = Crypto.util.bytesToBase64(bytes);
return {
'Filename': 'wx-applet-fittime/' + '${filename}',
'key': '',
'policy': policyBase64,
'OSSAccessKeyId': app.globalData.config.aliAccessId,
'success_action_status': '200', // 让服务端返回200,不然,默认会返回204
'signature': signature
};
}
};