aboutsummaryrefslogtreecommitdiff
path: root/src/Jellyfin.Drawing.Skia
diff options
context:
space:
mode:
authorcvium <clausvium@gmail.com>2023-10-25 23:29:05 +0200
committercvium <clausvium@gmail.com>2023-10-25 23:29:05 +0200
commit0a284dc0ab3d8503df88b96c5c74640710942a76 (patch)
tree0d986528a94c664feedb04b226bcb84d7efad9e0 /src/Jellyfin.Drawing.Skia
parent42a7e4cf1a09404eae3f588ba5c6312633bfb2da (diff)
refactor: cache the resize image filter
Diffstat (limited to 'src/Jellyfin.Drawing.Skia')
-rw-r--r--src/Jellyfin.Drawing.Skia/SkiaEncoder.cs44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
index 554fbe941..b8290c5fc 100644
--- a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
+++ b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
@@ -27,6 +27,30 @@ public class SkiaEncoder : IImageEncoder
private readonly ILogger<SkiaEncoder> _logger;
private readonly IApplicationPaths _appPaths;
+ private static readonly SKImageFilter _imageFilter;
+
+#pragma warning disable CA1810
+ static SkiaEncoder()
+#pragma warning restore CA1810
+ {
+ var kernel = new[]
+ {
+ 0, -.1f, 0,
+ -.1f, 1.4f, -.1f,
+ 0, -.1f, 0,
+ };
+
+ var kernelSize = new SKSizeI(3, 3);
+ var kernelOffset = new SKPointI(1, 1);
+ _imageFilter = SKImageFilter.CreateMatrixConvolution(
+ kernelSize,
+ kernel,
+ 1f,
+ 0f,
+ kernelOffset,
+ SKShaderTileMode.Clamp,
+ true);
+ }
/// <summary>
/// Initializes a new instance of the <see cref="SkiaEncoder"/> class.
@@ -357,25 +381,7 @@ public class SkiaEncoder : IImageEncoder
IsDither = isDither
};
- var kernel = new float[9]
- {
- 0, -.1f, 0,
- -.1f, 1.4f, -.1f,
- 0, -.1f, 0,
- };
-
- var kernelSize = new SKSizeI(3, 3);
- var kernelOffset = new SKPointI(1, 1);
-
- paint.ImageFilter = SKImageFilter.CreateMatrixConvolution(
- kernelSize,
- kernel,
- 1f,
- 0f,
- kernelOffset,
- SKShaderTileMode.Clamp,
- true);
-
+ paint.ImageFilter = _imageFilter;
canvas.DrawBitmap(
source,
SKRect.Create(0, 0, source.Width, source.Height),