浅析uniapp如何做图片裁剪及遇到问题 uni.canvasToTempFilePath 在APP下返回的是临时路径,如何把路径转为base64的解决方案
一、图片裁剪
推荐一款轻量级图片裁剪插件 kpsImageCuster:https://ext.dcloud.net.cn/plugin?id=1076。
其原理就是利用 uni.canvasToTempFilePath() 把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径。
官方介绍见文档:uni.canvasToTempFilePath(object, component)
setTimeout(() => {
this.targetContext.drawImage(this.url, x, y, width, height, 0, 0, tw, th);
this.targetContext.draw(false, () => {
uni.canvasToTempFilePath({
canvasId: "target",
success: (res) => {
var path = res.tempFilePath;
// #ifdef H5
if (this.blob) {
path = this.parseBlob(path);
}
// #endif
this.$emit("ok", {
path: path
});
},
fail: (ev) => {
console.log(ev);
},
complete: () => {
uni.hideLoading();
}
}, this);
});
}, 100);
二、解决uni-app在App端上传图片时路径转Base64的问题
在用uni-app开发项目的时候大家都会遇到这么一个问题,就是上传图片时在App上拿到的是文件路径,然而后端要接收的却是Base64字符串。但是在App端又无法调用Web Api(例如:Blob fileReader 等),这里推荐一款可以直接将Path转为Base64的插件。
image-tools:插件地址 —— https://www.npmjs.com/package/image-tools
uniapp的插件:https://ext.dcloud.net.cn/plugin?id=123
其实就是一个工具类 js,可以选取里面的方法直接拿的用
import { pathToBase64 } from '@/utils/image-tools.js'
// 需要注意的是方法返回均是 promise,得使用promise的写法
saveImg(e) {
if(!e || !e.path) return
pathToBase64(e.path).then(res => {
this.uploadImg(res)
})
},
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2017-07-13 CSS3的content属性详解及CSS中content使用字体图标
2017-07-13 浅析一次pm2升级导致部分项目无法启动的问题
2017-07-13 IE浏览器无法直接识别input的type="hidden"问题
2017-07-13 浅析前端报错Mixed Content:was loaded over HTTPS, but requested an insecure错误解决方案