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;
}
///