fix editing annotation

This commit is contained in:
Alex Bezdieniezhnykh
2024-09-13 17:39:53 +03:00
parent 52371ace3a
commit 42fdee599e
11 changed files with 171 additions and 67 deletions
+35 -19
View File
@@ -14,16 +14,27 @@ public class GalleryManager(Config config, ILogger<GalleryManager> logger) : IGa
public int ThumbnailsCount { get; set; }
public int ImagesCount { get; set; }
private DirectoryInfo? _thumbnailsDirectory;
private DirectoryInfo ThumbnailsDirectory
{
get
{
if (_thumbnailsDirectory != null)
return _thumbnailsDirectory;
var dir = new DirectoryInfo(config.ThumbnailsDirectory);
if (!dir.Exists)
Directory.CreateDirectory(config.ThumbnailsDirectory);
_thumbnailsDirectory = new DirectoryInfo(config.ThumbnailsDirectory);
return _thumbnailsDirectory;
}
}
public async Task RefreshThumbnails()
{
var dir = new DirectoryInfo(config.ThumbnailsDirectory);
if (!dir.Exists)
Directory.CreateDirectory(config.ThumbnailsDirectory);
var prefixLen = Config.ThumbnailPrefix.Length;
var thumbnailsDir = new DirectoryInfo(config.ThumbnailsDirectory);
var thumbnails = thumbnailsDir.GetFiles()
var thumbnails = ThumbnailsDirectory.GetFiles()
.Select(x => Path.GetFileNameWithoutExtension(x.Name)[..^prefixLen])
.GroupBy(x => x)
.Select(gr => gr.Key)
@@ -38,15 +49,9 @@ public class GalleryManager(Config config, ILogger<GalleryManager> logger) : IGa
var imgName = Path.GetFileNameWithoutExtension(img.Name);
if (thumbnails.Contains(imgName))
continue;
try
{
var bitmap = await GenerateThumbnail(img);
if (bitmap != null)
{
var thumbnailName = Path.Combine(thumbnailsDir.FullName, $"{imgName}{Config.ThumbnailPrefix}.jpg");
bitmap.Save(thumbnailName, ImageFormat.Jpeg);
}
await CreateThumbnail(img.FullName);
}
catch (Exception e)
{
@@ -57,15 +62,25 @@ public class GalleryManager(Config config, ILogger<GalleryManager> logger) : IGa
}
}
private async Task<Bitmap?> GenerateThumbnail(FileInfo img)
public async Task CreateThumbnail(string imgPath)
{
var bitmap = await GenerateThumbnail(imgPath);
if (bitmap != null)
{
var thumbnailName = Path.Combine(ThumbnailsDirectory.FullName, $"{Path.GetFileNameWithoutExtension(imgPath)}{Config.ThumbnailPrefix}.jpg");
bitmap.Save(thumbnailName, ImageFormat.Jpeg);
}
}
private async Task<Bitmap?> GenerateThumbnail(string imgPath)
{
var width = (int)config.ThumbnailConfig.Size.Width;
var height = (int)config.ThumbnailConfig.Size.Height;
var imgName = Path.GetFileNameWithoutExtension(img.Name);
var labelName = Path.Combine(config.LabelsDirectory, $"{imgName}.txt");
var imgName = Path.GetFileName(imgPath);
var labelName = Path.Combine(config.LabelsDirectory, $"{Path.GetFileNameWithoutExtension(imgPath)}.txt");
var originalImage = Image.FromStream(new MemoryStream(await File.ReadAllBytesAsync(img.FullName)));
var originalImage = Image.FromStream(new MemoryStream(await File.ReadAllBytesAsync(imgPath)));
var bitmap = new Bitmap(width, height);
@@ -77,8 +92,8 @@ public class GalleryManager(Config config, ILogger<GalleryManager> logger) : IGa
var size = new Size(originalImage.Width, originalImage.Height);
if (!File.Exists(labelName))
{
File.Move(img.FullName, Path.Combine(config.UnknownImages, Path.GetFileName(img.Name)));
logger.LogInformation($"No labels found for image {img.Name}! Moved image to the {config.UnknownImages} folder.");
File.Move(imgPath, Path.Combine(config.UnknownImages, imgName));
logger.LogInformation($"No labels found for image {imgName}! Moved image to the {config.UnknownImages} folder.");
return null;
}
var labels = (await YoloLabel.ReadFromFile(labelName))
@@ -139,5 +154,6 @@ public interface IGalleryManager
{
int ThumbnailsCount { get; set; }
int ImagesCount { get; set; }
Task CreateThumbnail(string imgPath);
Task RefreshThumbnails();
}