Fix #825 properly

This commit is contained in:
Paddy Xu
2021-03-07 19:02:08 +01:00
parent 9f426326ba
commit a91261435a
9 changed files with 47 additions and 17 deletions

View File

@@ -50,10 +50,10 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage
private static AnimationProvider InitAnimationProvider(Uri path, MetaProvider meta)
{
var ext = Path.GetExtension(path.OriginalString).ToLower();
var ext = Path.GetExtension(path.LocalPath).ToLower();
var type = Providers.First(p => p.Key.Contains(ext) || p.Key.Contains("*")).Value;
var provider = type.CreateInstance<AnimationProvider>(path.OriginalString, meta);
var provider = type.CreateInstance<AnimationProvider>(path, meta);
return provider;
}

View File

@@ -25,13 +25,13 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage
{
internal abstract class AnimationProvider : IDisposable
{
protected AnimationProvider(string path, MetaProvider meta)
protected AnimationProvider(Uri path, MetaProvider meta)
{
Path = path;
Meta = meta;
}
public string Path { get; }
public Uri Path { get; }
public MetaProvider Meta { get; }

View File

@@ -37,16 +37,16 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
private int _lastEffectivePreviousPreviousFrameIndex;
private NativeProvider _nativeImageProvider;
public APngProvider(string path, MetaProvider meta) : base(path, meta)
public APngProvider(Uri path, MetaProvider meta) : base(path, meta)
{
if (!IsAnimatedPng(path))
if (!IsAnimatedPng(path.LocalPath))
{
_nativeImageProvider = new NativeProvider(path, meta);
Animator = _nativeImageProvider.Animator;
return;
}
var decoder = new APNGBitmap(path);
var decoder = new APNGBitmap(path.LocalPath);
_baseFrame = decoder.DefaultImage;
_frames = new List<FrameInfo>(decoder.Frames.Length);

View File

@@ -21,7 +21,7 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
{
internal class DcrawProvider : NativeProvider
{
public DcrawProvider(string path, MetaProvider meta) : base(path, meta)
public DcrawProvider(Uri path, MetaProvider meta) : base(path, meta)
{
throw new NotImplementedException();
}

View File

@@ -33,15 +33,15 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
private bool _isPlaying;
private NativeProvider _nativeProvider;
public GifProvider(string path, MetaProvider meta) : base(path, meta)
public GifProvider(Uri path, MetaProvider meta) : base(path, meta)
{
if (!ImageAnimator.CanAnimate(Image.FromFile(path)))
if (!ImageAnimator.CanAnimate(Image.FromFile(path.LocalPath)))
{
_nativeProvider = new NativeProvider(path, meta);
return;
}
_fileHandle = (Bitmap) Image.FromFile(path);
_fileHandle = (Bitmap) Image.FromFile(path.LocalPath);
_fileHandle.SetResolution(DpiHelper.DefaultDpi * DpiHelper.GetCurrentScaleFactor().Horizontal,
DpiHelper.DefaultDpi * DpiHelper.GetCurrentScaleFactor().Vertical);

View File

@@ -30,7 +30,7 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
{
internal class ImageMagickProvider : AnimationProvider
{
public ImageMagickProvider(string path, MetaProvider meta) : base(path, meta)
public ImageMagickProvider(Uri path, MetaProvider meta) : base(path, meta)
{
Animator = new Int32AnimationUsingKeyFrames();
Animator.KeyFrames.Add(new DiscreteInt32KeyFrame(0,
@@ -90,7 +90,7 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
try
{
using (var mi = new MagickImage(Path, settings))
using (var mi = new MagickImage(Path.LocalPath, settings))
{
var profile = mi.GetColorProfile();
if (mi.ColorSpace == ColorSpace.RGB || mi.ColorSpace == ColorSpace.sRGB ||

View File

@@ -27,7 +27,7 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
{
internal class NativeProvider : AnimationProvider
{
public NativeProvider(string path, MetaProvider meta) : base(path, meta)
public NativeProvider(Uri path, MetaProvider meta) : base(path, meta)
{
Animator = new Int32AnimationUsingKeyFrames();
Animator.KeyFrames.Add(new DiscreteInt32KeyFrame(0,
@@ -55,7 +55,7 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
{
var img = new BitmapImage();
img.BeginInit();
img.UriSource = new Uri(Path);
img.UriSource = Path;
img.CacheOption = BitmapCacheOption.OnLoad;
// specific renderSize to avoid .net's double to int conversion
img.DecodePixelWidth = rotate ? decodeHeight : decodeWidth;
@@ -94,7 +94,7 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage.Providers
{
var img = new BitmapImage();
img.BeginInit();
img.UriSource = new Uri(Path);
img.UriSource = Path;
img.CacheOption = BitmapCacheOption.OnLoad;
img.DecodePixelWidth = (int) (rotate ? fullSize.Height : fullSize.Width);
img.DecodePixelHeight = (int) (rotate ? fullSize.Width : fullSize.Height);