mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-12-20 02:19:57 +08:00
Fix #153: determine imagetype by signature
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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});
|
||||||
|
|||||||
Reference in New Issue
Block a user