作为react web应用程序的一部分,我们使用Zxing库来执行条形码和qr码扫描。然而,我们在iphone 13上遇到了一个问题,它默认将变焦设置为x1,这导致当我们靠近要扫描的元素时,图像变得模糊。我们想将缩放配置为x0.5(在原生iphone应用程序中是可能的),但我找不到与ios兼容的解决方案。如果你有什么主意,我洗耳恭听。提前谢谢。
if(!navigator?.mediaDevices?.getUserMedia){
onError && onError('Cannot stream camera')
return
}
let userMediaStream: MediaStream
navigator.mediaDevices.getUserMedia({ audio: false, video: { facingMode: 'environment'}})
.then(stream => {
userMediaStream = stream
if(!videoRef?.current){
onError && onError('video ref missing')
return
}
videoRef.current.srcObject = stream
})
return () => {
if(userMediaStream) {
userMediaStream.getTracks().forEach(t => t.stop())
}
}
我已经试过列出支持的约束:
const constraintList = new Array();
const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
for (const constraint of Object.keys(supportedConstraints)) {
constraintList.push(constraint);
}
console.log(constraintList);
但是我没有得到允许我修改缩放或焦点的元素:['aspectRatio', 'deviceId', ' echocancel ', 'facingMode', 'frameRate', 'groupId', 'height', 'sampleRate', ' sampleSize', 'volume', 'width']
<代码>代码>
您可以使用react-zxing
来获取设备的枚举列表:
const { ref } = useZxing({
deviceId,
onResult(result) {
// ...
},
onError: (err: Error) => {
console.error(err);
},
});
这将返回一个设备列表,每个设备都有一个标签("前置摄像头,广角摄像头等)和deviceId属性,然后你可以将其传递给CC_3(或任何其他qr阅读器库):
PP_5