/// <summary> /// Returns true when the supplied stream is supported. /// </summary> /// <param name="stream">The stream to check.</param> /// <returns>True when the supplied stream is supported.</returns> public bool IsSupported(Stream stream) { Throw.IfNull(nameof(stream), stream); if (!stream.CanRead || !stream.CanWrite || !stream.CanSeek) { return(false); } long startPosition = stream.Position; IMagickImageInfo info = new MagickImageInfo(stream); stream.Position = startPosition; return(IsSupported(MagickFormatInfo.Create(info.Format))); }
/// <summary> /// Read basic information about an image with multiple frames/pages. /// </summary> /// <param name="data">The span of bytes to read the information from.</param> /// <returns>A <see cref="IMagickImageInfo"/> iteration.</returns> /// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception> public static IReadOnlyCollection <IMagickImageInfo> ReadCollection(ReadOnlySpan <byte> data) { var result = new List <MagickImageInfo>(); using (var images = new MagickImageCollection()) { images.Ping(data); foreach (var image in images) { var info = new MagickImageInfo(); info.Initialize(image); result.Add(info); } } return(result); }
private IImageOptimizer GetOptimizer(Stream stream) { long position = stream.Position; MagickImageInfo imageInfo = new MagickImageInfo(stream); stream.Position = position; MagickFormatInfo info = MagickNET.GetFormatInformation(imageInfo.Format); foreach (IImageOptimizer optimizer in _optimizers) { if (optimizer.Format.Module == info.Module) { return(optimizer); } } throw new MagickCorruptImageErrorException("Invalid format, supported formats are: " + SupportedFormats); }
public static MagickFormatInfo GetFormatInformation(Stream stream) { var startPosition = stream.Position; try { var info = new MagickImageInfo(stream); return(MagickNET.GetFormatInformation(info.Format)); } catch { stream.Position = startPosition; return(GetFormatInformationFromHeader(stream)); } finally { stream.Position = startPosition; } }