瀏覽代碼

Merge pull request #10472 from cvium/dispose_imagefilter

Bond-009 1 年之前
父節點
當前提交
ed00d7448b
共有 1 個文件被更改,包括 25 次插入19 次删除
  1. 25 19
      src/Jellyfin.Drawing.Skia/SkiaEncoder.cs

+ 25 - 19
src/Jellyfin.Drawing.Skia/SkiaEncoder.cs

@@ -23,6 +23,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.
@@ -356,25 +380,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),