|
|
|
@ -2,19 +2,15 @@ using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Security.Cryptography.Xml;
|
|
|
|
|
using BlurHashSharp.SkiaSharp;
|
|
|
|
|
using Jellyfin.Extensions;
|
|
|
|
|
using MediaBrowser.Common.Configuration;
|
|
|
|
|
using MediaBrowser.Common.Extensions;
|
|
|
|
|
using MediaBrowser.Controller.Drawing;
|
|
|
|
|
using MediaBrowser.Controller.LiveTv;
|
|
|
|
|
using MediaBrowser.Model.Drawing;
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using SkiaSharp;
|
|
|
|
|
using static System.Net.Mime.MediaTypeNames;
|
|
|
|
|
using SKSvg = SkiaSharp.Extended.Svg.SKSvg;
|
|
|
|
|
using Svg.Skia;
|
|
|
|
|
|
|
|
|
|
namespace Jellyfin.Drawing.Skia;
|
|
|
|
|
|
|
|
|
@ -123,10 +119,16 @@ public class SkiaEncoder : IImageEncoder
|
|
|
|
|
var extension = Path.GetExtension(path.AsSpan());
|
|
|
|
|
if (extension.Equals(".svg", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
var svg = new SKSvg();
|
|
|
|
|
using var svg = new SKSvg();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using var picture = svg.Load(path);
|
|
|
|
|
if (picture is null)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError("Unable to determine image dimensions for {FilePath}", path);
|
|
|
|
|
return default;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new ImageDimensions(Convert.ToInt32(picture.CullRect.Width), Convert.ToInt32(picture.CullRect.Height));
|
|
|
|
|
}
|
|
|
|
|
catch (FormatException skiaColorException)
|
|
|
|
@ -289,10 +291,7 @@ public class SkiaEncoder : IImageEncoder
|
|
|
|
|
|
|
|
|
|
private SKBitmap OrientImage(SKBitmap bitmap, SKEncodedOrigin origin)
|
|
|
|
|
{
|
|
|
|
|
var needsFlip = origin == SKEncodedOrigin.LeftBottom
|
|
|
|
|
|| origin == SKEncodedOrigin.LeftTop
|
|
|
|
|
|| origin == SKEncodedOrigin.RightBottom
|
|
|
|
|
|| origin == SKEncodedOrigin.RightTop;
|
|
|
|
|
var needsFlip = origin is SKEncodedOrigin.LeftBottom or SKEncodedOrigin.LeftTop or SKEncodedOrigin.RightBottom or SKEncodedOrigin.RightTop;
|
|
|
|
|
var rotated = needsFlip
|
|
|
|
|
? new SKBitmap(bitmap.Height, bitmap.Width)
|
|
|
|
|
: new SKBitmap(bitmap.Width, bitmap.Height);
|
|
|
|
|