Removed SaveExtraLargeBitmapThumbnail

This commit is contained in:
2022-12-31 18:48:25 -07:00
parent 45f4401fa4
commit 1417d87930
16 changed files with 276 additions and 229 deletions

View File

@ -27,8 +27,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Core" Version="1.1.4" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Shell" Version="1.1.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />

View File

@ -1,5 +1,4 @@
using Microsoft.Extensions.Configuration;
using Microsoft.WindowsAPICodePack.Shell;
using Phares.Shared;
using Serilog;
using System.Diagnostics;
@ -177,7 +176,9 @@ public partial class Form : System.Windows.Forms.Form
int? id;
string? message;
string checkFile;
TimeSpan timeSpan;
DateTime? dateTime;
DateTime?[] dateTimes;
FileHolder fileHolder;
bool isIgnoreExtension;
string checkFileExtension;
@ -188,7 +189,8 @@ public partial class Form : System.Windows.Forms.Form
const string jpeg = ".jpeg";
_InnerProgressBar.Visible = true;
bool isValidImageFormatExtension;
string? extraLargeBitmapThumbnail;
bool nameWithoutExtensionIsIdFormat;
IReadOnlyList<MetadataExtractor.Directory> directories;
string[] files = Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly);
if (files.All(l => l.EndsWith(".id")))
{
@ -207,7 +209,8 @@ public partial class Form : System.Windows.Forms.Form
continue;
isValidImageFormatExtension = _Configuration.PropertyConfiguration.ValidImageFormatExtensions.Contains(fileHolder.ExtensionLowered);
isIgnoreExtension = isValidImageFormatExtension && _Configuration.IgnoreExtensions.Contains(fileHolder.ExtensionLowered);
if (IProperty.NameWithoutExtensionIsIdFormat(fileHolder))
nameWithoutExtensionIsIdFormat = IProperty.NameWithoutExtensionIsIdFormat(fileHolder);
if (!isIgnoreExtension && isValidImageFormatExtension)
{
if (fileHolder.ExtensionLowered == jpeg)
{
@ -215,28 +218,28 @@ public partial class Form : System.Windows.Forms.Form
File.Move($"{fileHolder.FullName}.id", Path.Combine(fileHolder.DirectoryName, $"{fileHolder.NameWithoutExtension}{jpg}.id"));
File.Move(fileHolder.FullName, Path.Combine(fileHolder.DirectoryName, $"{fileHolder.NameWithoutExtension}{jpg}"));
}
continue;
if (nameWithoutExtensionIsIdFormat)
continue;
}
(dateTimes, id, message) = IProperty.Get(fileHolder, isIgnoreExtension, isValidImageFormatExtension);
minimumDateTime = dateTimes.Min();
if (minimumDateTime is null || !isIgnoreExtension && isValidImageFormatExtension)
{
dateTime = IProperty.GetDateTimeFromName(fileHolder);
if (dateTime is null || minimumDateTime is null)
timeSpan = new TimeSpan(0);
else
timeSpan = new(Math.Abs(minimumDateTime.Value.Ticks - dateTime.Value.Ticks));
}
if (!isIgnoreExtension && isValidImageFormatExtension)
extraLargeBitmapThumbnail = null;
else
{
extraLargeBitmapThumbnail = SaveExtraLargeBitmapThumbnail(fileHolder);
if (extraLargeBitmapThumbnail is null)
continue;
fileHolder = new(extraLargeBitmapThumbnail);
isValidImageFormatExtension = _Configuration.PropertyConfiguration.ValidImageFormatExtensions.Contains(fileHolder.ExtensionLowered);
isIgnoreExtension = isValidImageFormatExtension && _Configuration.IgnoreExtensions.Contains(fileHolder.ExtensionLowered);
if (isIgnoreExtension || !isValidImageFormatExtension)
continue;
if (!int.TryParse(Path.GetFileName(fileHolder.DirectoryName)[..4], out int year))
year = minimumDateTime.Value.Year;
directories = MetadataExtractor.ImageMetadataReader.ReadMetadata(file);
dateTime = Metadata.Models.Stateless.Methods.IMetadata.GetMinimumDateTime(dateTimes, year, directories);
timeSpan = new TimeSpan(int.MaxValue);
}
if (fileHolder.DirectoryName is null)
continue;
(minimumDateTime, id, message) = IProperty.Get(fileHolder);
if (id is null)
continue;
dateTime = IProperty.GetDateTimeFromName(fileHolder);
if (dateTime is not null && minimumDateTime is not null && new TimeSpan(Math.Abs(minimumDateTime.Value.Ticks - dateTime.Value.Ticks)).TotalMinutes > 2)
if (dateTime is not null && timeSpan.TotalMinutes > 2)
{
checkFileExtension = fileHolder.ExtensionLowered == jpeg ? jpg : fileHolder.ExtensionLowered;
checkFile = Path.Combine(fileHolder.DirectoryName, $"{dateTime.Value:yyyy-MM-dd}.{dateTime.Value.Ticks}{checkFileExtension}");
@ -252,42 +255,21 @@ public partial class Form : System.Windows.Forms.Form
if (File.Exists(checkFile))
continue;
File.Move(fileHolder.FullName, checkFile);
File.WriteAllText($"{checkFile}.id", $"{id.Value}{Environment.NewLine}{fileHolder.Name}");
File.WriteAllText($"{checkFile}.id", $"{checkFile}{Environment.NewLine}{fileHolder.Name}");
continue;
}
if (extraLargeBitmapThumbnail is not null)
{
File.Delete(fileHolder.FullName);
fileHolder = new(file);
if (fileHolder.DirectoryName is null)
continue;
}
if (id is null)
continue;
checkFileExtension = fileHolder.ExtensionLowered == jpeg ? jpg : fileHolder.ExtensionLowered;
checkFile = Path.Combine(fileHolder.DirectoryName, $"{id.Value}{checkFileExtension}");
if (checkFile == fileHolder.FullName || File.Exists(checkFile))
continue;
File.Move(fileHolder.FullName, checkFile);
File.WriteAllText($"{checkFile}.id", $"{id.Value}{Environment.NewLine}{fileHolder.Name}");
File.WriteAllText($"{checkFile}.id", $"{checkFile}{Environment.NewLine}{fileHolder.Name}");
}
_InnerProgressBar.Visible = false;
}
private string? SaveExtraLargeBitmapThumbnail(FileHolder fileHolder)
{
string? result;
ShellFile shellFile = ShellFile.FromFilePath(fileHolder.FullName);
if (shellFile is null || shellFile.Thumbnail is null || shellFile.Thumbnail.ExtraLargeBitmap.Clone() is not Bitmap bitmap || bitmap.Width == 0)
result = null;
else
{
result = $"{fileHolder.FullName}{_ResizeFileNameExtension}";
bitmap.Save(result);
bitmap.Dispose();
shellFile.Dispose();
}
return result;
}
private List<(string, FaceDistance)> GetFileAndFaceDistanceCollection(string[] files)
{
// int? id;
@ -308,7 +290,7 @@ public partial class Form : System.Windows.Forms.Form
{
_ProgressBar.PerformStep();
directories = MetadataExtractor.ImageMetadataReader.ReadMetadata(file);
json = Metadata.Models.Stateless.IMetadata.GetFaceEncoding(directories);
json = Metadata.Models.Stateless.Methods.IMetadata.GetFaceEncoding(directories);
if (json is null)
break;
modelsFaceEncoding = JsonSerializer.Deserialize<Shared.Models.FaceEncoding>(json);