diff --git a/src/ImageSharp/Image.FromBytes.cs b/src/ImageSharp/Image.FromBytes.cs index 98a39193d..12abf720b 100644 --- a/src/ImageSharp/Image.FromBytes.cs +++ b/src/ImageSharp/Image.FromBytes.cs @@ -3,6 +3,7 @@ using System; using System.IO; +using System.Linq; using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.PixelFormats; @@ -193,13 +194,24 @@ namespace SixLabors.ImageSharp /// The mime type or null if none found. public static unsafe IImageFormat DetectFormat(Configuration config, ReadOnlySpan data) { - fixed (byte* ptr = &data.GetPinnableReference()) + int maxHeaderSize = config.MaxHeaderSize; + if (maxHeaderSize <= 0) { - using (var stream = new UnmanagedMemoryStream(ptr, data.Length)) + return null; + } + + IImageFormat format = default; + foreach (IImageFormatDetector detector in config.ImageFormatsManager.FormatDetectors) + { + IImageFormat f = detector.DetectFormat(data); + + if (f != null) { - return DetectFormat(config, stream); + format = f; } } + + return format; } ///