Browse Source

✨ feat:

zbb 6 days ago
parent
commit
a4cca63b94
1 changed files with 16 additions and 6 deletions
  1. 16 6
      utils/poster.js

+ 16 - 6
utils/poster.js

@@ -43,10 +43,14 @@ const createCanvasImage = (canvas, src) => {
 const downloadImage = async (url) => {
 	try {
 		if (!url || !url.startsWith('http')) return url
-		const res = await uni.downloadFile({ url })
-		if (res.statusCode === 200) return res.tempFilePath
+		// 使用 getImageInfo 获取图片本地临时路径(微信原生能力,通过 request 域名即可,无需 downloadFile 白名单)
+		const res = await uni.getImageInfo({ src: url })
+		if (res && res.path) return res.path
 		return null
-	} catch { return null }
+	} catch (e) {
+		console.warn('获取图片信息失败:', url, e)
+		return null
+	}
 }
 
 /**
@@ -56,8 +60,9 @@ const resolveImageSrc = async (src) => {
 	if (!src) return null
 	if (src.startsWith('http')) {
 		try {
-			const res = await uni.downloadFile({ url: src })
-			if (res.statusCode === 200) return res.tempFilePath
+			// getImageInfo 走 request 域名,无需额外配置 downloadFile 白名单
+			const res = await uni.getImageInfo({ src })
+			if (res && res.path) return res.path
 			return null
 		} catch { return null }
 	}
@@ -233,8 +238,13 @@ export const generateCardPoster = async (cardInfo = {}, qrInfo = {}) => {
 
 				let avatarImg = null
 				if (cardInfo.avatar) {
+					// 先用 downloadImage(内部走 getImageInfo)获取本地临时路径
 					const localPath = await downloadImage(cardInfo.avatar)
-					avatarImg = await createCanvasImage(canvas, localPath)
+					if (localPath) {
+						avatarImg = await createCanvasImage(canvas, localPath)
+					} else {
+						console.warn('未能获取头像本地路径,直接尝试原始链接')
+					}
 				}
 				if (avatarImg) {
 					drawCircleAvatar(ctx, avatarImg, avatarCx, avatarCy, avatarR)