如何在 imageCapture.takePhoto() 中更改大小?
How to change size in imageCapture.takePhoto()?
我需要从 imageCapture.takePhoto() 更改照片的大小但不是 working.I 需要将大小更改为 320 高 X 240 宽但结果是 640 高 X 480宽度。
在这里您可以找到文档。https://developer.mozilla.org/en-US/docs/Web/API/ImageCapture/takePhoto
navigator.getUserMedia(
{
video:true,
audio:true
},
function(localMediaStream) {
const track = localMediaStream.getVideoTracks()[0];
let imageCapture = new ImageCapture(track);
imageCapture.takePhoto(
{imageHeight:320,imageWidth:240}).then(function(blob) {
//do somethingh with blob (photo)
}).catch(function(error) {
console.log(error);
});
},
function(err) {
console.log(err);
});
您似乎需要先检查 ImageCapture 的 PhotoCapabilities,然后才能使用 的 photoSettings 参数ImageCapture.takePhoto(照片设置).
为此,您将调用 ImageCapture 的 getPhotoCapabilities()
方法,然后检查设置为 imageHeight
和 [=13= 的范围].
const capture = new ImageCapture(track);
const { imageWidth, imageHeight } = await capture.getPhotoCapabilities();
const width = setInRange(required_width, imageWidth);
const height = setInRange(required_height, imageHeight);
const photoSettings = (width && height) ? {
imageWidth: width,
imageHeight: height
} : null;
const pic = await capture.takePhoto(photoSettings);
function setInRange(value, range) {
if(!range) return NaN;
let x = Math.min(range.max, Math.max(range.min, value));
x = Math.round(x / range.step) * range.step; // take `step` into account
return x;
}
https://jsfiddle.net/bLrvyet5/
但很可能您需要的宽度和高度不在这些 MediaSettingsRange 中,因此您可能需要在 canvas 上自行调整此图片的大小.
我需要从 imageCapture.takePhoto() 更改照片的大小但不是 working.I 需要将大小更改为 320 高 X 240 宽但结果是 640 高 X 480宽度。
在这里您可以找到文档。https://developer.mozilla.org/en-US/docs/Web/API/ImageCapture/takePhoto
navigator.getUserMedia(
{
video:true,
audio:true
},
function(localMediaStream) {
const track = localMediaStream.getVideoTracks()[0];
let imageCapture = new ImageCapture(track);
imageCapture.takePhoto(
{imageHeight:320,imageWidth:240}).then(function(blob) {
//do somethingh with blob (photo)
}).catch(function(error) {
console.log(error);
});
},
function(err) {
console.log(err);
});
您似乎需要先检查 ImageCapture 的 PhotoCapabilities,然后才能使用 的 photoSettings 参数ImageCapture.takePhoto(照片设置).
为此,您将调用 ImageCapture 的 getPhotoCapabilities()
方法,然后检查设置为 imageHeight
和 [=13= 的范围].
const capture = new ImageCapture(track);
const { imageWidth, imageHeight } = await capture.getPhotoCapabilities();
const width = setInRange(required_width, imageWidth);
const height = setInRange(required_height, imageHeight);
const photoSettings = (width && height) ? {
imageWidth: width,
imageHeight: height
} : null;
const pic = await capture.takePhoto(photoSettings);
function setInRange(value, range) {
if(!range) return NaN;
let x = Math.min(range.max, Math.max(range.min, value));
x = Math.round(x / range.step) * range.step; // take `step` into account
return x;
}
https://jsfiddle.net/bLrvyet5/
但很可能您需要的宽度和高度不在这些 MediaSettingsRange 中,因此您可能需要在 canvas 上自行调整此图片的大小.