Fix #153: determine imagetype by signature

This commit is contained in:
Paddy Xu
2017-12-28 22:35:46 +02:00
parent a502b2363a
commit c78fbb009a
2 changed files with 14 additions and 14 deletions

View File

@@ -116,22 +116,22 @@ namespace QuickLook.Plugin.ImageViewer.AnimatedImage
private static ObjectAnimationUsingKeyFrames LoadFullImageCore(Uri path)
{
var ext = Path.GetExtension(path.LocalPath).ToLower();
byte[] sign;
using (var reader =
new BinaryReader(new FileStream(path.LocalPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
sign = reader.BaseStream.Length < 4 ? new byte[] {0, 0, 0, 0} : reader.ReadBytes(4);
}
IAnimationProvider provider;
switch (ext)
{
case ".gif":
provider = new GIFAnimationProvider();
break;
case ".png":
provider = new APNGAnimationProvider();
break;
default:
provider = new ImageMagickProvider();
break;
}
if (sign[0] == 'G' && sign[1] == 'I' && sign[2] == 'F' && sign[3] == '8')
provider = new GIFAnimationProvider();
else if (sign[0] == 0x89 && sign[1] == 'P' && sign[2] == 'N' && sign[3] == 'G')
provider = new APNGAnimationProvider();
else
provider = new ImageMagickProvider();
var animator = new ObjectAnimationUsingKeyFrames();
provider.GetAnimator(animator, path.LocalPath);
animator.Freeze();

View File

@@ -100,7 +100,7 @@ namespace QuickLook.Plugin.ImageViewer
return;
if (m.Key == "File name" || m.Key == "File size" || m.Key == "MIME type" || m.Key == "Exif comment"
|| m.Key == "Image size" || m.Key == "Thumbnail" || m.Key == "Exif comment")
|| m.Key == "Thumbnail" || m.Key == "Exif comment")
return;
textMeta.Inlines.Add(new Run(m.Key) {FontWeight = FontWeights.SemiBold});