aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShadowghost <Shadowghost@users.noreply.github.com>2026-09-15 11:16:11 -0400
committerCody Robibero <cody@robibe.ro>2026-09-15 11:16:11 -0400
commit8e2b62331d8f6c632ad8bcc80149818ba5b8a800 (patch)
treef792fb4559cffddb29bb0053b7acfcdfb0a9022a /src
parent6a317f45ce5def14b4feccc4ae84f2e27441b997 (diff)
Backport pull request #17956 from jellyfin/release-12.z
Don't resample or sharpen images Skia isn't actually resizing Original-merge: 7d7faf08b7769af0f6c544cab59fb57316167d84 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
Diffstat (limited to 'src')
-rw-r--r--src/Jellyfin.Drawing.Skia/SkiaEncoder.cs14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
index 4cdff055f4..b8d40614d2 100644
--- a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
+++ b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
@@ -556,6 +556,13 @@ public class SkiaEncoder : IImageEncoder
/// <returns>The resized image.</returns>
internal static SKImage ResizeImage(SKBitmap source, SKImageInfo targetInfo, bool isAntialias = false, bool isDither = false)
{
+ if (source.Width == targetInfo.Width && source.Height == targetInfo.Height)
+ {
+ return SKImage.FromBitmap(source);
+ }
+
+ var isDownscale = source.Width > targetInfo.Width || source.Height > targetInfo.Height;
+
using var target = new SKBitmap(targetInfo);
using var canvas = new SKCanvas(target);
using var paint = new SKPaint();
@@ -565,7 +572,7 @@ public class SkiaEncoder : IImageEncoder
// Historically, kHigh implied cubic filtering, but only when upsampling.
// If specified kHigh, and were down-sampling, Skia used to switch back to kMedium (bilinear filtering plus mipmaps).
// With current skia API, passing Mitchell cubic when down-sampling will cause serious quality degradation.
- var samplingOptions = source.Width > targetInfo.Width || source.Height > targetInfo.Height
+ var samplingOptions = isDownscale
? DefaultSamplingOptions
: UpscaleSamplingOptions;
@@ -576,7 +583,10 @@ public class SkiaEncoder : IImageEncoder
samplingOptions,
paint);
- SharpenInPlace(target);
+ if (isDownscale)
+ {
+ SharpenInPlace(target);
+ }
return SKImage.FromBitmap(target);
}