调用uni.canvasToTempFilePath截取图片的时候,输出生成的图片是正常的,输出在页面也 可以正常显示。但是上传给服务器后,当服务器返回该图片确实空白的。 这种情况只在一部分机型的h5端出现,一部分机型正常。出现这种情况的机型的app端也是正常显示的,没有任何问题。只是h5出了问题。
下面是代码:(代码应该是没有问题的,因为一部分机型完成是正常的)
ctx.draw(true, () => {
// 获取画布要裁剪的位置和宽度 均为百分比 * 画布中图片的宽度 保证了在微信小程序中裁剪的图片模糊 位置不对的问题 canvasT = (_this.cutT / _this.cropperH) * (_this.imageH / pixelRatio)
var canvasW = ((_this.cropperW - _this.cutL - _this.cutR) / _this.cropperW) * IMG_REAL_W;
var canvasH = ((_this.cropperH - _this.cutT - _this.cutB) / _this.cropperH) * IMG_REAL_H;
var canvasL = (_this.cutL / _this.cropperW) * IMG_REAL_W;
var canvasT = (_this.cutT / _this.cropperH) * IMG_REAL_H;
uni.canvasToTempFilePath({
x: canvasL,
y: canvasT,
width: canvasW,
height: canvasH,
destWidth: canvasW,
destHeight: canvasH,
quality: 0.5,
canvasId: 'myCanvas',
success: function (res) {
uni.hideLoading();
// 成功获得地址的地方
let tempFacePath = res.tempFilePath;
// 截取到新的像以后,就进行上传
uni.showLoading({
mask: true,
title: '上传中...'
});
uni.uploadFile({
url: config.serverUrl + '/user/uploadFace?userId=' + _this.globalUser.id + '&qq=' + config.qq,
filePath: tempFacePath,
name: 'file',
header: {
headerUserId: _this.globalUser.id,
headerUserToken: _this.globalUser.userUniqueToken,
withCredentials: true
},
success:(res) => {
let resData = JSON.parse(res.data);
if (resData.status == 200) {
// 获得最新的用户数据
var userInfo = resData.data;
uni.setStorageSync('globalUser', userInfo);
uni.hideLoading();
uni.redirectTo({
url: '../settings/settings'
});
uni.navigateBack({
delta: 1
});
} else if (resData.status == 502 || resData.status == 500) {
uni.hideLoading();
uni.showModal({
title: '提示',
content: '当前是异地登录,请重新登录',
showCancel: false,
success: (res) => {
if(res.confirm){
post('/user/logout',{userId: _this.globalUser.id}).then((res) => {
if(res.status == 200){
uni.removeStorageSync("globalUser");
uni.reLaunch({
url: '../registerLogin/registerLogin?showToHome=true'
});
}
});
}
},
fail: () => {
uni.removeStorageSync("globalUser");
uni.reLaunch({
url: '../registerLogin/registerLogin?showToHome=true'
});
}
})
}else{
uni.hideLoading();
uni.showToast({
title: resData.msg,
icon: 'none',
image: '/static/icos/error.png',
duration: 3000
});
}
},
fail: (res) => {
uni.hideLoading();
// uni.showToast({
// title: '上传失败',
// image: '/static/icos/error.png',
// duration: 3000
// });
uni.showModal({
title: '上传失败',
content: res.errMsg,
showCancel: false
});
}
});
}
});
});
hero_ho (作者)
ipad-mini
2019-06-05 11:48
武哥
我也遇到这个问题,怎么样 问题解决了吗
2019-07-23 09:18