react-native-vision-camera-face-detector
Version:
Frame Processor Plugin to detect faces using MLKit Vision Face Detector for React Native Vision Camera!
71 lines (69 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.useImageFaceDetector = useImageFaceDetector;
var _react = require("react");
var _reactNative = require("react-native");
var _factory = require("../factory");
// types
/**
* Use a {@linkcode ImageFaceDetector}.
*
* A {@linkcode ImageFaceDetector} can be used to detect
* {@linkcode Face}s in any image provided.
*
* @example
* ```ts
* const uri = 'file:///storage/emulated/0/Download/pic.jpg'
* const ImageFaceDetector = useFaceDetector({...})
* const faces = ImageFaceDetector.detectFaces(uri)
* ```
*/
function useImageFaceDetector(options) {
/**
* Resolves input image
*
* @param {InputImage} image Image path
* @returns {string} Resolved image
*/
function resolveUri(image) {
const uri = (() => {
switch (typeof image) {
case 'number':
{
const source = _reactNative.Image.resolveAssetSource(image);
return source?.uri;
}
case 'string':
{
return image;
}
case 'object':
{
return image?.uri;
}
default:
{
return undefined;
}
}
})();
if (!uri) throw new Error('Unable to resolve image');
return uri;
}
return (0, _react.useMemo)(() => {
const imageFaceDetector = (0, _factory.createImageFaceDetector)(options);
return {
...imageFaceDetector,
// creates a wrapper to resolve uris before passing to native
detectFaces(image) {
const uri = resolveUri(image);
return imageFaceDetector.detectFaces(uri);
}
};
}, [options]);
}
var _default = exports.default = useImageFaceDetector;
//# sourceMappingURL=useImageFaceDetector.js.map