aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasily <just.one.man@yandex.ru>2020-05-19 13:46:00 +0300
committerVasily <just.one.man@yandex.ru>2020-05-19 13:46:00 +0300
commitf18293bf762c86581153ab8d9b1b6267421178a9 (patch)
treeeba73962b5b95b7d9626c34faf5bf22bc6a6a043
parentbfb644d5f50fff9fd8ba5fe4504c73ec5be851af (diff)
Switch to BlurHashSharp lib which should be faster
-rw-r--r--Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj4
-rw-r--r--Jellyfin.Drawing.Skia/SkiaEncoder.cs28
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)