|
@@ -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),
|