This commit is contained in:
aihe 2024-05-11 17:38:16 +08:00
parent 24ace56576
commit 6f58c5ca0d
3 changed files with 75 additions and 4 deletions

View File

@ -1,4 +1,4 @@
import { goto } from "./untool";
import { goto, getImageTempFilePath } from "./untool";
import { showToast, showLoading, hideLoading, downloadFile } from "./untool"
import { setSessionXToken, getSessionXToken } from "@/session"
import { textEncoder, textDecoder } from "./util"
@ -77,7 +77,8 @@ async function handleResponse({
// 图片类型数据特殊处理
if((header['content-type'] || header['Content-Type'])?.indexOf?.("image/") > -1) {
const base64 = "data:image/png;base64," + uni.arrayBufferToBase64(data)
resolve({ data: { fileUrl: base64 } })
let fileUrl = await getImageTempFilePath(base64)
resolve({ data: { fileUrl } })
return
}
data = data || {}

View File

@ -142,6 +142,68 @@ const saveFile = ({ tempFilePath })=> {
});
})
}
const getImageInfo = (src)=> {
return new Promise(async (resolve, reject)=> {
uni.getImageInfo({
src,
success(res) {
resolve(res)
},
fail(e) {
console.log("获取图片信息失败=======", e)
reject(e)
}
})
})
}
// 微信小程序 有该api
const writeFile = (params = {}, fileEndFix = '.png')=> {
return new Promise((resolve, reject)=> {
//声明文件系统
const fs = wx.getFileSystemManager();
var times = new Date().getTime();
var filePath = wx.env.USER_DATA_PATH + '/' + times + fileEndFix;
//将base64图片写入
var that = this;
fs.writeFile({
filePath: filePath,
...params,
success: (res) => {
resolve({ filePath })
},
fail: (err)=> {
console.log("writeFile:错误==", err)
reject(err)
}
});
})
}
const getImageTempFilePath = (base64File) => {
return new Promise(async (resolve, reject) => {
let tempFile = base64File
// // #ifdef MP-WEIXIN
// let wxRes = await writeFile({ data: base64File, encoding: 'base64' })
// tempFile = wxRes.filePath
// // #endif
// // #ifdef H5
// let webRes = await downloadFile(base64File)
// tempFile = webRes.tempFilePath
// // #endif
// // #ifdef APP-PLUS
// let appRes = await downloadFile(tempFile)
// console.log("===appRes===", appRes)
// // #endif
resolve(tempFile)
})
}
export {
@ -158,4 +220,5 @@ export {
downloadFile,
saveNetFile,
saveFile,
getImageTempFilePath,
}

View File

@ -132,6 +132,10 @@ export default {
showToast('获取图片信息异常:getImageZip')
reject('获取图片信息异常:getImageZip')
}
},
fail(err){
showToast('获取图片信息异常:getImageZip')
console.log("canvasGetImageData:失败====", err);
}
})
})
@ -146,14 +150,17 @@ export default {
uni.getImageInfo({
src: filePath,
success(res) {
console.log("获取图片信息成功=====", res)
// 按原图比例算出 新的画图高度
let height = that.canvasHeight
if(!height) {
height = parseInt(that.canvasWidth * (res.height / res.width))
that.$emit("update:canvasHeight", height)
}
cxt.drawImage(filePath, 0, 0, that.canvasWidth, that.canvasHeight);
cxt.drawImage(res.path, 0, 0, that.canvasWidth, that.canvasHeight);
console.log("开始绘制图片===")
cxt.draw(true, ()=> {
console.log("绘制图片结束===")
setTimeout( async ()=> {
let data = await that.getImageZip({ canvasId: that.canvasId, width: that.canvasWidth, height, })
resolve(data)
@ -161,8 +168,8 @@ export default {
});
},
fail(e) {
console.log("获取图片信息失败=====", e)
reject(e)
console.log(e)
}
})
})