CanvasContext.drawImage安卓端imageResource问题

https://uniapp.dcloud.io/api/canvas/CanvasContext?id=canvascontextdrawimage

文档本身没有说明路径怎么写,我宣布unapp的文档是世界上最垃圾的文档

...之一

资源试了安卓绝对路径,不可行,还试了好几种,发现都不行

然后发现官网drawimage有个示例代码

uni.chooseImage({
  success: function(res){
    ctx.drawImage(res.tempFilePaths[0], 0, 0, 150, 100)
    ctx.draw()
  }
})

可以借此把drawimage的能用的imageResource的路径写法打印出来

console.log(res)

chooseImage得到的是相对路径

_doc/uniapp_temp_1605694247631/canvas/1605694123212.jpg

就在android/data/io.dcloud.HBuilder/apps/HBuilder/doc里,实时调试时记得刷新下目录

坑就坑在为什么相对路径要加个下划线_

算了,凑合... 拼接一下就行

绝对路径转相对路径

1、正则方法

var strMatch = "storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/snapshot/snapshot_1605690803195.jpg"
var matchReg = /doc.*?\.jpg/gi;
console.log("_"+strMatch.match(matchReg));

2、循环拆解再拼接

var filePath1="storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/snapshot/snapshot_1605690803195.jpg"
var filePath2=filePath1;
var arry = filePath2.split("/")
var j
var len=arry.length
for(j=0,len;j<len;j++) { 
	if(arry[j]==="doc" ){ break; }
}
filePath2="_doc/"
j+=1
for(j;j<len;j++){
	filePath2+=arry[j];
 if(j!=len-1){
	 filePath2+="/"
	  } 
}
console.log("filePath1:"+filePath1)
console.log("filePath2:"+filePath2)

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注