Files
threeonecheck_web/unpackage/dist/dev/mp-weixin/utils/watermark.js
2026-06-03 10:16:37 +08:00

69 lines
2.8 KiB
JavaScript

"use strict";
const common_vendor = require("../common/vendor.js");
function addTimestampWatermark({ tempFilePath, canvasId = "watermarkCanvas", canvasWidthRef, canvasHeightRef, instance }) {
return new Promise((resolve, reject) => {
common_vendor.index.getImageInfo({
src: tempFilePath,
success: (imageInfo) => {
const imgWidth = imageInfo.width;
const imgHeight = imageInfo.height;
if (canvasWidthRef && canvasWidthRef.value !== void 0) {
canvasWidthRef.value = imgWidth;
}
if (canvasHeightRef && canvasHeightRef.value !== void 0) {
canvasHeightRef.value = imgHeight;
}
common_vendor.nextTick$1(() => {
const ctx = common_vendor.index.createCanvasContext(canvasId, instance);
if (!ctx) {
reject("创建水印画布上下文失败");
return;
}
ctx.drawImage(tempFilePath, 0, 0, imgWidth, imgHeight);
const now = /* @__PURE__ */ new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, "0");
const day = String(now.getDate()).padStart(2, "0");
const hours = String(now.getHours()).padStart(2, "0");
const minutes = String(now.getMinutes()).padStart(2, "0");
const seconds = String(now.getSeconds()).padStart(2, "0");
const timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
const fontSize = Math.max(14, Math.floor(imgWidth * (14 / 375)));
ctx.setFontSize(fontSize);
ctx.setFillStyle("#C9CBD4");
ctx.setShadow(2, 2, 4, "rgba(0, 0, 0, 0.6)");
const padding = fontSize;
const textWidth = timeStr.length * (fontSize * 0.55);
const x = imgWidth - textWidth - padding;
const y = imgHeight - padding;
ctx.fillText(timeStr, x, y);
ctx.draw(false, () => {
setTimeout(() => {
common_vendor.index.canvasToTempFilePath({
canvasId,
destWidth: imgWidth,
destHeight: imgHeight,
fileType: "jpg",
quality: 0.9,
success: (exportRes) => {
resolve(exportRes.tempFilePath);
},
fail: (err) => {
common_vendor.index.__f__("error", "at utils/watermark.js:80", "导出带水印图片失败:", err);
reject(err);
}
}, instance);
}, 150);
});
});
},
fail: (err) => {
common_vendor.index.__f__("error", "at utils/watermark.js:89", "获取图片信息失败:", err);
reject(err);
}
});
});
}
exports.addTimestampWatermark = addTimestampWatermark;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/watermark.js.map