35 lines
1.5 KiB
C#
35 lines
1.5 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Text.Json;
|
|
using View_by_Distance.Shared.Models;
|
|
using View_by_Distance.Shared.Models.Stateless;
|
|
|
|
namespace View_by_Distance.Distance.Models.Stateless;
|
|
|
|
internal static class FaceEncodingLogic
|
|
{
|
|
|
|
internal static ReadOnlyCollection<ExifDirectory> GetMappedExifDirectoryWithEncoding(ICompare compare, long ticks, ReadOnlyCollection<ExifDirectory> exifDirectories)
|
|
{
|
|
List<ExifDirectory> results = [];
|
|
string? json;
|
|
FaceEncoding? faceEncoding;
|
|
ExifDirectory exifDirectory;
|
|
FaceRecognitionDotNet.Models.FaceEncoding? encoding;
|
|
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
|
string message = $") Building Mapped with Encoding Face Files Collection - {totalSeconds} total second(s)";
|
|
compare.ConstructProgressBar(exifDirectories.Count, message);
|
|
foreach (ExifDirectory e in exifDirectories)
|
|
{
|
|
compare.Tick();
|
|
json = Metadata.Models.Stateless.IMetadata.GetFaceEncoding(e);
|
|
faceEncoding = json is null ? null : JsonSerializer.Deserialize(json, FaceEncodingGenerationContext.Default.FaceEncoding);
|
|
if (faceEncoding is null)
|
|
continue;
|
|
encoding = FaceRecognitionDotNet.Models.FaceRecognition.LoadFaceEncoding(faceEncoding.RawEncoding);
|
|
exifDirectory = ExifDirectory.Get(encoding, e);
|
|
results.Add(exifDirectory);
|
|
}
|
|
return results.AsReadOnly();
|
|
}
|
|
|
|
} |