|
|
@@ -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)
|