aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJPVenson <JPVenson@users.noreply.github.com>2023-04-10 22:38:07 +0300
committerGitHub <noreply@github.com>2023-04-10 21:38:07 +0200
commit3c22d5c9705921672a932192d016933ef5900001 (patch)
tree62b6c6c508fb73ea2e29fb3f381c79a080bf2496
parent15c8854502a4a9006754921d2bcef016e87b1104 (diff)
#7626 Added handling for common FormatExceptions with Skia loading sv… (#9581)
Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com>
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs2
-rw-r--r--src/Jellyfin.Drawing.Skia/SkiaEncoder.cs18
2 files changed, 15 insertions, 5 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 8883aff0b..75a1a5a4d 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -1885,7 +1885,7 @@ namespace Emby.Server.Implementations.Library
catch (Exception ex)
{
_logger.LogError(ex, "Cannot get image dimensions for {ImagePath}", image.Path);
- size = new ImageDimensions(0, 0);
+ size = default;
image.Width = 0;
image.Height = 0;
}
diff --git a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
index 6da77ad95..2d980db18 100644
--- a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
+++ b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs
@@ -120,8 +120,18 @@ public class SkiaEncoder : IImageEncoder
if (extension.Equals(".svg", StringComparison.OrdinalIgnoreCase))
{
var svg = new SKSvg();
- svg.Load(path);
- return new ImageDimensions(Convert.ToInt32(svg.Picture.CullRect.Width), Convert.ToInt32(svg.Picture.CullRect.Height));
+ try
+ {
+ svg.Load(path);
+ return new ImageDimensions(Convert.ToInt32(svg.Picture.CullRect.Width), Convert.ToInt32(svg.Picture.CullRect.Height));
+ }
+ catch (FormatException skiaColorException)
+ {
+ // This exception is known to be thrown on vector images that define custom styles
+ // Skia SVG is not able to handle that and as the repository is quite stale and has not received updates we just catch them
+ _logger.LogDebug(skiaColorException, "There was a issue loading the requested svg file");
+ return default;
+ }
}
using var codec = SKCodec.Create(path, out SKCodecResult result);
@@ -132,10 +142,10 @@ public class SkiaEncoder : IImageEncoder
return new ImageDimensions(info.Width, info.Height);
case SKCodecResult.Unimplemented:
_logger.LogDebug("Image format not supported: {FilePath}", path);
- return new ImageDimensions(0, 0);
+ return default;
default:
_logger.LogError("Unable to determine image dimensions for {FilePath}: {SkCodecResult}", path, result);
- return new ImageDimensions(0, 0);
+ return default;
}
}