Force Single Image

This commit is contained in:
2022-08-30 12:49:05 -07:00
parent 7f717258d2
commit 21c549e4ce
9 changed files with 101 additions and 77 deletions

View File

@ -3,14 +3,15 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class Closest
{
private static int Get(List<double> faceDistances) => (int)(Math.Round(faceDistances.Average(), Stateless.IClosest.Digits) * Stateless.ILocation.Factor);
private static int Get(double rawAverage) => (int)(Math.Round(rawAverage, Stateless.IClosest.Digits) * Stateless.ILocation.Factor);
private static Models.Closest Get(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, FaceDistance faceDistance)
private static Models.Closest Get(Models.Face face, DateTime minimumDateTime, FaceDistance faceDistance)
{
Models.Closest result;
int average = Get(faceDistance.Distances);
double minimum = faceDistance.Distances.Min();
long? ticksDelta;
double minimum = faceDistance.Distances.Min();
double rawAverage = faceDistance.Distances.Average();
bool aboveTolerance = minimum >= Stateless.IClosest.Tolerance || rawAverage >= Stateless.IClosest.Tolerance;
if (faceDistance.IsWrongYear is null || faceDistance.IsWrongYear.Value)
ticksDelta = null;
else
@ -18,19 +19,20 @@ internal abstract class Closest
ticksDelta = Math.Abs(faceDistance.MinimumDateTime.Ticks - minimumDateTime.Ticks);
if (faceDistance.MinimumDateTime < faceDistance.Mapping.PersonBirthday.Value)
ticksDelta *= 2;
else if (faceDistance.Mapping.ApproximateYears.HasValue && faceDistance.MinimumDateTime < DateTime.Now.AddYears(-faceDistance.Mapping.ApproximateYears.Value))
ticksDelta *= 2;
}
if (minimum > Stateless.IClosest.Tolerance)
faceDistance.Mapping.SetPersonBirthday(personBirthday);
if (face.Location?.NormalizedPixelPercentage is null)
throw new NullReferenceException(nameof(face.Location.NormalizedPixelPercentage));
result = new(average, face.Location.NormalizedPixelPercentage.Value, faceDistance.IsWrongYear, faceDistance.Mapping, minimum, faceDistance.MinimumDateTime, ticksDelta);
int average = Get(rawAverage);
result = new(aboveTolerance, average, face.Location.NormalizedPixelPercentage.Value, faceDistance.IsWrongYear, faceDistance.Mapping, minimum, faceDistance.MinimumDateTime, ticksDelta);
return result;
}
internal static Models.Closest[] GetCollection(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances)
internal static Models.Closest[] GetCollection(Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances)
{
Models.Closest[] results;
Models.Closest[] closestCollection = (from l in faceDistances select Get(personBirthday, face, minimumDateTime, l)).ToArray();
Models.Closest[] closestCollection = (from l in faceDistances select Get(face, minimumDateTime, l)).ToArray();
results = (from l in closestCollection orderby l.Average, l.TicksDelta.HasValue, l.TicksDelta select l).ToArray();
return results;
}

View File

@ -5,6 +5,6 @@ public interface IClosest
Models.Closest[] TestStatic_Get(List<FaceDistance> faceDistances);
static Models.Closest[] GetCollection(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances) => Closest.GetCollection(personBirthday, face, minimumDateTime, faceDistances);
static Models.Closest[] GetCollection(Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances) => Closest.GetCollection(face, minimumDateTime, faceDistances);
}