从相册选择照片,然后使用canvas裁剪照片,通过wx.canvasToTempFilePath获取裁剪后的图片临时路径
将裁剪后的临时路径传递给FileSystemManager的saveFileSync()方法,将裁剪后的图片保存到本地,
最后将图片的本地路径传递显示到<image>中
(题外话:为什么不将canvas裁剪的临时路径直接传递给<image> ?
因为实践发现,如果分两次选择图片,后选择并canvas裁剪的图片,会覆盖之前裁剪的图片,即前后两次的临时路径相同)
大概代码如下:
wx.canvasToTempFilePath()
.then(res => {
return this.saveImage2Local(res.tempFilePath)
})
//... 省略 ...
saveImage2Local(tempPath){
console.log("saveImage2Local.tempPath = " + tempPath)
return wx.getFileSystemManager()
.saveFileSync({
"tempFilePath": tempPath,
"filePath": "cliped"})
}
报错如下:
问题1:
运行后log报错:"tempFilePath must be a string", 难道tempPath: "http://tmp/...png"不是string吗?该如何修改?
问题2:
saveFileSync中的参数“filePath”设置为“cliped”, 是不是表示图片会被保存到 /xxx/xxx/cliped/目录下?
问题3:
代码片段中,我在data中定义了OffscreenCanvas对象,想将JS项目改写为TS项目,但是会提示 offscreenCanvas类型不匹配,
尝试过offscreenCanvas: null, offscreenCanvas: '', offscreenCanvas: any 都不行,
到底应该咋写呀?
Page({
data: {
offscreenCanvas: null,
}
})
---------------------------- 以下是代码片段 ---------------------
https://developers.weixin.qq.com/s/hJIhhKm77vGN
看看文档吧 传参都不对
只是裁剪头像的话,可以纯api实现啊,wx.cropImage。不用canvas这么复杂