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) 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; IAnimationProvider provider;
switch (ext) if (sign[0] == 'G' && sign[1] == 'I' && sign[2] == 'F' && sign[3] == '8')
{ provider = new GIFAnimationProvider();
case ".gif": else if (sign[0] == 0x89 && sign[1] == 'P' && sign[2] == 'N' && sign[3] == 'G')
provider = new GIFAnimationProvider(); provider = new APNGAnimationProvider();
break; else
case ".png": provider = new ImageMagickProvider();
provider = new APNGAnimationProvider();
break;
default:
provider = new ImageMagickProvider();
break;
}
var animator = new ObjectAnimationUsingKeyFrames(); var animator = new ObjectAnimationUsingKeyFrames();
provider.GetAnimator(animator, path.LocalPath); provider.GetAnimator(animator, path.LocalPath);
animator.Freeze(); animator.Freeze();

View File

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