This commit is contained in:
Manav Rathi
2024-05-30 13:32:10 +05:30
parent c71e56ec43
commit 3fc41aecca

View File

@@ -53,7 +53,9 @@ export const indexFaces = async (
) => {
const startTime = Date.now();
const imageBitmap = await fetchAndCreateImageBitmap(enteFile, file);
const imageBitmap = await renderableImageBlob(enteFile, file).then(
createImageBitmap,
);
let mlFile: MlFileData;
try {
mlFile = await indexFaces_(enteFile, imageBitmap);
@@ -70,22 +72,21 @@ export const indexFaces = async (
};
/**
* Return a {@link ImageBitmap}, using {@link file} if present otherwise
* Return a "renderable" image blob, using {@link file} if present otherwise
* downloading the source image corresponding to {@link enteFile} from remote.
*/
const fetchAndCreateImageBitmap = async (enteFile: EnteFile, file: File) =>
file ? getLocalFileImageBitmap(enteFile, file) : fetchImageBitmap(enteFile);
const fetchImageBitmap = async (enteFile: EnteFile) =>
fetchRenderableBlob(enteFile).then(createImageBitmap);
const renderableImageBlob = async (enteFile: EnteFile, file: File) =>
file
? getRenderableImage(enteFile.metadata.title, file)
: fetchRenderableBlob(enteFile);
const fetchRenderableBlob = async (enteFile: EnteFile) => {
const fileType = enteFile.metadata.fileType;
const fileStream = await DownloadManager.getFile(enteFile);
const fileBlob = await new Response(fileStream).blob();
if (enteFile.metadata.fileType == FILE_TYPE.IMAGE) {
const fileType = enteFile.metadata.fileType;
if (fileType == FILE_TYPE.IMAGE) {
return getRenderableImage(enteFile.metadata.title, fileBlob);
} else if (enteFile.metadata.fileType == FILE_TYPE.LIVE_PHOTO) {
} else if (fileType == FILE_TYPE.LIVE_PHOTO) {
const { imageFileName, imageData } = await decodeLivePhoto(
enteFile.metadata.title,
fileBlob,
@@ -96,11 +97,6 @@ const fetchRenderableBlob = async (enteFile: EnteFile) => {
}
};
const getLocalFileImageBitmap = async (enteFile: EnteFile, localFile: File) =>
createImageBitmap(
await getRenderableImage(enteFile.metadata.title, localFile),
);
const indexFaces_ = async (enteFile: EnteFile, imageBitmap: ImageBitmap) => {
const fileID = enteFile.id;
const { width, height } = imageBitmap;