CopyFacesAndSaveFaceLandmarkImage
This commit is contained in:
@ -157,7 +157,7 @@ public class D_Face
|
||||
return result;
|
||||
}
|
||||
|
||||
private void SaveFaces(FileHolder resizedFileHolder, List<(Shared.Models.Face, FileInfo?, string)> collection)
|
||||
private void SaveFaces(FileHolder resizedFileHolder, List<(Shared.Models.Face, FileInfo?, string, bool)> collection)
|
||||
{
|
||||
int width;
|
||||
int height;
|
||||
@ -173,8 +173,10 @@ public class D_Face
|
||||
int fileSource = (int)IExif.Tags.FileSource;
|
||||
int userComment = (int)IExif.Tags.UserComment;
|
||||
using Bitmap source = new(resizedFileHolder.FullName);
|
||||
foreach ((Shared.Models.Face face, FileInfo? fileInfo, string fileName) in collection)
|
||||
foreach ((Shared.Models.Face face, FileInfo? fileInfo, string fileName, bool save) in collection)
|
||||
{
|
||||
if (!save)
|
||||
continue;
|
||||
if (fileInfo is null)
|
||||
continue;
|
||||
if (face.FaceEncoding is null || face?.Location is null || face?.OutputResolution is null)
|
||||
@ -425,36 +427,37 @@ public class D_Face
|
||||
return results;
|
||||
}
|
||||
|
||||
public bool SaveFaces(string dResultsFullGroupDirectory, List<Tuple<string, DateTime>> subFileTuples, List<string> parseExceptions, MappingFromItem mappingFromItem, string facesDirectory, List<Shared.Models.Face> faces)
|
||||
public List<(Shared.Models.Face, FileInfo?, string, bool)> SaveFaces(string f, string dResultsFullGroupDirectory, List<Tuple<string, DateTime>> subFileTuples, List<string> parseExceptions, MappingFromItem mappingFromItem, string facesDirectory, List<Shared.Models.Face> faces)
|
||||
{
|
||||
List<(Shared.Models.Face, FileInfo?, string, bool Save)> results = new();
|
||||
bool save;
|
||||
FileInfo fileInfo;
|
||||
bool result = false;
|
||||
string deterministicHashCodeKey;
|
||||
List<(Shared.Models.Face, FileInfo?, string)> collection = new();
|
||||
string[] changesFrom = new string[] { nameof(A_Property), nameof(B_Metadata), nameof(C_Resize) };
|
||||
List<DateTime> dateTimes = (from l in subFileTuples where changesFrom.Contains(l.Item1) select l.Item2).ToList();
|
||||
if (!Directory.Exists(facesDirectory))
|
||||
_ = Directory.CreateDirectory(facesDirectory);
|
||||
foreach (Shared.Models.Face face in faces)
|
||||
{
|
||||
save = false;
|
||||
if (face.FaceEncoding is null || face.Location is null || face.OutputResolution is null)
|
||||
{
|
||||
collection.Add(new(face, null, string.Empty));
|
||||
results.Add(new(face, null, string.Empty, save));
|
||||
continue;
|
||||
}
|
||||
deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(mappingFromItem.Id, face.Location, ILocation.Digits, face.OutputResolution);
|
||||
fileInfo = new FileInfo(Path.Combine(facesDirectory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_FileNameExtension}"));
|
||||
collection.Add(new(face, fileInfo, Path.Combine(facesDirectory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_HiddenFileNameExtension}")));
|
||||
if (_OverrideForFaceImages)
|
||||
result = true;
|
||||
save = true;
|
||||
else if (!fileInfo.Exists)
|
||||
result = true;
|
||||
save = true;
|
||||
else if (_CheckDFaceAndUpWriteDates && dateTimes.Any() && dateTimes.Max() > fileInfo.LastWriteTime)
|
||||
result = true;
|
||||
save = true;
|
||||
results.Add(new(face, fileInfo, Path.Combine(facesDirectory, $"{deterministicHashCodeKey}{mappingFromItem.ImageFileHolder.ExtensionLowered}{_HiddenFileNameExtension}"), save));
|
||||
}
|
||||
if (result)
|
||||
SaveFaces(mappingFromItem.ResizedFileHolder, collection);
|
||||
return result;
|
||||
if (results.Any(l => l.Save))
|
||||
SaveFaces(mappingFromItem.ResizedFileHolder, results);
|
||||
return results;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user