diff options
Diffstat (limited to 'src/Jellyfin.Drawing/ImageProcessor.cs')
| -rw-r--r-- | src/Jellyfin.Drawing/ImageProcessor.cs | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src/Jellyfin.Drawing/ImageProcessor.cs b/src/Jellyfin.Drawing/ImageProcessor.cs index 5d4732234..46e5213a8 100644 --- a/src/Jellyfin.Drawing/ImageProcessor.cs +++ b/src/Jellyfin.Drawing/ImageProcessor.cs @@ -4,17 +4,19 @@ using System.Globalization; using System.IO; using System.Linq; using System.Net.Mime; +using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading; using System.Threading.Tasks; using AsyncKeyedLock; -using Jellyfin.Data.Entities; +using Jellyfin.Database.Implementations.Entities; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Net; @@ -32,7 +34,7 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable private const char Version = '3'; private static readonly HashSet<string> _transparentImageTypes - = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { ".png", ".webp", ".gif" }; + = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { ".png", ".webp", ".gif", ".svg" }; private readonly ILogger<ImageProcessor> _logger; private readonly IFileSystem _fileSystem; @@ -66,7 +68,7 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable var semaphoreCount = config.Configuration.ParallelImageEncodingLimit; if (semaphoreCount < 1) { - semaphoreCount = 2 * Environment.ProcessorCount; + semaphoreCount = Environment.ProcessorCount; } _parallelEncodingLimit = new(semaphoreCount); @@ -404,8 +406,27 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable } /// <inheritdoc /> + public string GetImageCacheTag(string baseItemPath, DateTime imageDateModified) + => (baseItemPath + imageDateModified.Ticks).GetMD5().ToString("N", CultureInfo.InvariantCulture); + + /// <inheritdoc /> public string GetImageCacheTag(BaseItem item, ItemImageInfo image) - => (item.Path + image.DateModified.Ticks).GetMD5().ToString("N", CultureInfo.InvariantCulture); + => GetImageCacheTag(item.Path, image.DateModified); + + /// <inheritdoc /> + public string GetImageCacheTag(BaseItemDto item, ItemImageInfo image) + => GetImageCacheTag(item.Path, image.DateModified); + + /// <inheritdoc /> + public string? GetImageCacheTag(BaseItemDto item, ChapterInfo chapter) + { + if (chapter.ImagePath is null) + { + return null; + } + + return GetImageCacheTag(item.Path, chapter.ImageDateModified); + } /// <inheritdoc /> public string? GetImageCacheTag(BaseItem item, ChapterInfo chapter) @@ -431,8 +452,7 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable return null; } - return (user.ProfileImage.Path + user.ProfileImage.LastModified.Ticks).GetMD5() - .ToString("N", CultureInfo.InvariantCulture); + return GetImageCacheTag(user.ProfileImage.Path, user.ProfileImage.LastModified); } private Task<(string Path, DateTime DateModified)> GetSupportedImage(string originalImagePath, DateTime dateModified) @@ -504,11 +524,11 @@ public sealed class ImageProcessor : IImageProcessor, IDisposable /// <inheritdoc /> public void CreateImageCollage(ImageCollageOptions options, string? libraryName) { - _logger.LogInformation("Creating image collage and saving to {Path}", options.OutputPath); + _logger.LogDebug("Creating image collage and saving to {Path}", options.OutputPath); _imageEncoder.CreateImageCollage(options, libraryName); - _logger.LogInformation("Completed creation of image collage and saved to {Path}", options.OutputPath); + _logger.LogDebug("Completed creation of image collage and saved to {Path}", options.OutputPath); } /// <inheritdoc /> |
