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