camera组件的takePhoto拍出来的照片,相比起实时预览的照片,缩放比例放大了,并且拍到了预览界面的上方屏幕之外的部分,也就是说发生了位移。
已测试机型:
- iPad5 - iPadOS16.7.10 - 8.0.54 - 3.7.2: 出现问题
- iPad mini4 - iOS15.8.3 - 8.0.54 - 3.7.2:正常,没有出现问题
- iPhone7 - iOS13.6.1 - 8.0.50 - 3.5.8:正常,没有出现问题
- Android系统暂未发现问题
暂时已发现的唯一出问题的机型是iPad5,系统是iPadOS16.7.10,微信版本8.0.54,基础库版本3.7.2
录屏视频可查看【腾讯文档】https://docs.qq.com/aio/DQUFtV3dLUnNJTE5I
好像是微信更新到8.0.56后才出现的这个问题,希望官方排查原因并解决!
目前已经发现出现此情况的机型:13pro max 、14pro、 14pro max
我这儿也出现了,都是ios机
ip14pro,ios18.1.1,微信8.0.56 也出现这个问题,不是稳定复现
我看官方的小程序“小程序示例”中也是有问题的,希望官方排查原因并解决!
这个问题哪位朋友找到解决方案了,麻烦给分享一下。
遇到同样的问题,希望快速修复
拍完之后会向左偏移 iphone13 iphone 14 Pro Max
遇到同样的问题, 机型 iphone 14 Pro, iOS 18.2, 微信8.0.55
/**
* 拍照
*/
takePhotoHandle(){
return new Promise((resolve, reject) => {
//屏幕信息
const {
windowWidth,
windowHeight,
pixelRatio
} = wx.getWindowInfo();
//创建离屏Canvas
const canvas = wx.createOffscreenCanvas({
type: '2d',
width: windowWidth * pixelRatio,
height: windowHeight * pixelRatio
});
const ctx = canvas.getContext('2d');
ctx.scale(pixelRatio, pixelRatio);
//创建ImageData
const image = ctx.createImageData(_this.frame.width, _this.frame.height);
//将实时帧写入ImageData, 需要前置监听实时帧(onCameraFrame)
image.data.set(new Uint8ClampedArray(_this.frame.data))
ctx.putImageData(image, 0, 0);
//获得base64图像
const base64Data = canvas.toDataURL('image/jpeg');
resolve(base64Data);
});
}
/**
* 相机初始化完成
* @param {*} e
*/
cameraInitDoneHandle(e) {
this.setData({
cameraLoading: false
});
this.setCameraListener();
},
/**
* 监听相机实时帧
*/
setCameraListener() {
const _this = this;
this.ctx = wx.createCameraContext();
this.listener = this.ctx.onCameraFrame((frame) => {
_this.frame = frame;
});
this.listener.start();
},
/**
* 相机意外中止
* @param {*} e
*/
cameraStopHandle(e) {
console.log('相机意外中止:', e)
this.listener.stop();
wx.navigateBack({
delta: 1
});
},