diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/CursorProvider.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/CursorProvider.cs
index 370b5f7b5..8a1c15393 100644
--- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/CursorProvider.cs
+++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/CursorProvider.cs
@@ -30,11 +30,9 @@
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
-using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using PixelFormat = System.Drawing.Imaging.PixelFormat;
-using Size = System.Windows.Size;
namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers;
diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/SvgProvider.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/SvgProvider.cs
new file mode 100644
index 000000000..f5f2fb2ad
--- /dev/null
+++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/AnimatedImage/Providers/SvgProvider.cs
@@ -0,0 +1,61 @@
+// Copyright © 2017-2025 QL-Win Contributors
+//
+// This file is part of QuickLook program.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+using QuickLook.Common.Helpers;
+using QuickLook.Common.Plugin;
+using SkiaSharp;
+using Svg.Skia;
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using System.Windows.Media.Imaging;
+
+namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers;
+
+internal class SvgProvider : ImageMagickProvider
+{
+ public SvgProvider(Uri path, MetaProvider meta, ContextObject contextObject) : base(path, meta, contextObject)
+ {
+ }
+
+ public override Task GetRenderedFrame(int index)
+ {
+ return new Task(() =>
+ {
+ try
+ {
+ using var svg = new SKSvg();
+
+ if (svg.Load(Path.LocalPath) is SKPicture picture)
+ {
+ using var ms = new MemoryStream();
+
+ // Render the SVG picture to a bitmap
+ picture.ToImage(ms, SKColors.Empty, SKEncodedImageFormat.Png, 100, 1f, 1f, SKColorType.Rgba8888, SKAlphaType.Unpremul, null);
+ return BitmapFrame.Create(ms, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
+ }
+ }
+ catch (Exception e)
+ {
+ ProcessHelper.WriteLog(e.ToString());
+ }
+
+ // Fallback to basic one
+ return base.GetRenderedFrame();
+ });
+ }
+}
diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs
index d74039e42..aadf80654 100644
--- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs
+++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs
@@ -84,6 +84,9 @@ public void Init()
AnimatedImage.AnimatedImage.Providers.Add(
new KeyValuePair([".cur", ".ani"],
typeof(CursorProvider)));
+ AnimatedImage.AnimatedImage.Providers.Add(
+ new KeyValuePair([".svg"],
+ typeof(SvgProvider)));
AnimatedImage.AnimatedImage.Providers.Add(
new KeyValuePair(["*"],
typeof(ImageMagickProvider)));
diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj
index d4f14f577..808d2d652 100644
--- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj
+++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/QuickLook.Plugin.ImageViewer.csproj
@@ -55,7 +55,12 @@
-
+
+ all
+
+
+ all
+
all