diff options
| author | Vasily <just.one.man@yandex.ru> | 2020-05-19 13:46:00 +0300 |
|---|---|---|
| committer | Vasily <just.one.man@yandex.ru> | 2020-05-19 13:46:00 +0300 |
| commit | f18293bf762c86581153ab8d9b1b6267421178a9 (patch) | |
| tree | eba73962b5b95b7d9626c34faf5bf22bc6a6a043 | |
| parent | bfb644d5f50fff9fd8ba5fe4504c73ec5be851af (diff) | |
Switch to BlurHashSharp lib which should be faster
| -rw-r--r-- | Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj | 4 | ||||
| -rw-r--r-- | Jellyfin.Drawing.Skia/SkiaEncoder.cs | 28 |
2 files changed, 5 insertions, 27 deletions
diff --git a/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj b/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj index 9f0e3a004..221346b68 100644 --- a/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj +++ b/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj @@ -18,11 +18,11 @@ </ItemGroup> <ItemGroup> + <PackageReference Include="BlurHashSharp" Version="1.0.0" /> + <PackageReference Include="BlurHashSharp.SkiaSharp" Version="1.0.0" /> <PackageReference Include="SkiaSharp" Version="1.68.1" /> <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="1.68.1" /> <PackageReference Include="Jellyfin.SkiaSharp.NativeAssets.LinuxArm" Version="1.68.1" /> - - <PackageReference Include="Blurhash.Core" Version="*" /> </ItemGroup> <ItemGroup> diff --git a/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/Jellyfin.Drawing.Skia/SkiaEncoder.cs index 1d7307863..d2da0cf17 100644 --- a/Jellyfin.Drawing.Skia/SkiaEncoder.cs +++ b/Jellyfin.Drawing.Skia/SkiaEncoder.cs @@ -5,7 +5,7 @@ using System.Globalization; using System.IO; using System.Linq; using System.Threading.Tasks; -using Blurhash.Core; +using BlurHashSharp.SkiaSharp; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Extensions; @@ -19,7 +19,7 @@ namespace Jellyfin.Drawing.Skia /// <summary> /// Image encoder that uses <see cref="SkiaSharp"/> to manipulate images. /// </summary> - public class SkiaEncoder : CoreEncoder, IImageEncoder + public class SkiaEncoder : IImageEncoder { private static readonly HashSet<string> _transparentImageTypes = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { ".png", ".gif", ".webp" }; @@ -250,29 +250,7 @@ namespace Jellyfin.Drawing.Skia throw new FileNotFoundException("File not found", path); } - using (var bitmap = GetBitmap(path, false, false, null)) - { - if (bitmap == null) - { - throw new ArgumentOutOfRangeException($"Skia unable to read image {path}"); - } - - var width = bitmap.Width; - var height = bitmap.Height; - var pixels = new Pixel[width, height]; - Parallel.ForEach(Enumerable.Range(0, height), y => - { - for (var x = 0; x < width; x++) - { - var color = bitmap.GetPixel(x, y); - pixels[x, y].Red = MathUtils.SRgbToLinear(color.Red); - pixels[x, y].Green = MathUtils.SRgbToLinear(color.Green); - pixels[x, y].Blue = MathUtils.SRgbToLinear(color.Blue); - } - }); - - return CoreEncode(pixels, 4, 4); - } + return BlurHashSharp.SkiaSharp.BlurHashEncoder.Encode(4, 4, path); } private static bool HasDiacritics(string text) |
