关键代码:
Taro.chooseImage({ sizeType: ['compressed'], sourceType: ['camera'] }).then((res) => {
this.setState({ image: res.tempFilePaths[0] })
this.imageToBase64(res.tempFilePaths[0]).then((resbase) => {
let isNotBig = res.tempFiles.every(item => {
console.log("image size:"+item.size)
return item.size <= 1000000
})
if (isNotBig) {
this.setState({ imgBase64: resbase })
} else {
//压缩图片大小
let that = this;
const ctx = Taro.createCanvasContext("canone")
setTimeout(() => {
ctx.drawImage(res.tempFilePaths[0], 0, 0, 300, 300)
ctx.draw(true, () => {
Taro.canvasToTempFilePath({
canvasId: "canone",
destWidth: 300,
destHeight: 300,
success: res2 => {
that.imageToBase64(res2.tempFilePath).then((resbase) => {
that.setState({ imgBase64: resbase })
})
}
})
})
}, 100)
}
})
})
HTML代码:
<View className='hidde-Canvas' hidden>
<Canvas canvasId='canone' ></Canvas>
</View>
<Image className='show-Image' style='width:100%;height:100%' src={this.state.image} mode='aspectFill' onClick={() => this.previewImage()} />
隐藏Canvas
.hidde-Canvas{
width:0px;height:0px;overflow:hidden;
position: fixed;
left: 9999px;
}