gpt4 book ai didi

javascript - 使用 FirefoxOS Camera API 拍照

转载 作者:行者123 更新时间:2023-11-30 12:22:33 26 4
gpt4 key购买 nike

我在 FirefoxOS 中使用 Camera API 时遇到一些问题。我正在尝试拍摄这样的照片:

var options = {
mode: 'picture',
recorderProfile: 'jpg',
previewSize: {
width: 352,
height: 288
}
};
function successCamera(newCamera) {
console.log("Succeeded loading camera");
function successPicture(pictureBlob){
console.log("Took picture");
}
function errorPicture(error) { console.log("Issue taking picture " + error); }
var picture = newCamera.takePicture(options, successPicture, errorPicture);
}
function errorCamera(error) {
console.log("Error loading camera. " + error);
console.warn(error);
}
navigator.mozCameras.getCamera("back", options, successCamera, errorCamera);

它给出了一个名为:HardwareClosed 的错误。我找不到太多关于此错误的信息,所以我只想在此处检查 StackOverflow,看看是否有人遇到过问题/知道这里的问题是什么。

感谢您提供的任何帮助!

最佳答案

HardwareClosed(内部映射到 NS_ERROR_NOT_INITIALIZED)可以由 getCamera 和 takePicture 调用返回。

如果是getCamera调用失败,可能是因为相机已经打开(在这个应用中,或者在另一个应用中),需要先释放。在未来的 Firefox OS 版本中,这将由 https://bugzilla.mozilla.org/show_bug.cgi?id=1073017 修复。以便新应用程序可以从旧应用程序“拿走”相机。

如果是 takePicture 调用失败(可能不是您的情况),那是因为在您调用 takePicture 之前相机已经被释放。那可能是你调用了 release 或某些驱动程序错误迫使相机关闭。

一些其他(不相关的)建议:

请注意,recorderProfile 无效。这样的事情会更合适:

var options = {
mode: 'picture',
recorderProfile: 'high',
previewSize: {
width: 352,
height: 288
}
};

Firefox OS 的更高版本(最新的 2.2,master)会验证 recorderProfile,如果您提供“jpg”,则会拒绝该配置。

回调语法在后来的相机 API 版本中被删除,并切换为 promises 和 events。如果您能够将 2.2 版本升级到最新版本(今年的版本),它会自动为您选择最佳配置,即:

navigator.mozCameras.getCamera("back").then(successCamera, errorCamera);

会选择与您的窗口大小最接近的匹配预览大小,以及与所选可用预览大小匹配的最高纵横比图片大小。这与股票相机应用程序的工作方式相同。

takePicture 和 getCamera 使用不同的选项(有些重叠),但由于您没有将它们中的任何一个用于 takePicture,null 应该足够了:

var picture = newCamera.takePicture().then(successPicture, errorPicture);

var picture = newCamera.takePicture(null, successPicture, errorPicture);

如果你想同时支持 promise 和回调 API 版本,你可以像这个应用程序那样做一个技巧来检查 Firefox OS 版本:https://github.com/texthtml/torch/blob/master/src/index.js#L69

关于javascript - 使用 FirefoxOS Camera API 拍照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com