/// <summary> /// Returns the format information. The header of the image in the array of bytes is used to /// determine the format. /// </summary> /// <param name="data">The array of bytes to read the image header from.</param> /// <returns>The format information.</returns> public static MagickFormatInfo?Create(byte[] data) { Throw.IfNullOrEmpty(nameof(data), data); var instance = new NativeMagickFormatInfo(); instance.GetInfoWithBlob(data, data.Length); return(Create(instance)); }
/// <summary> /// Returns the format information. The header of the image in the span of bytes is used to /// determine the format. /// </summary> /// <param name="data">The span of bytes to read the image header from.</param> /// <returns>The format information.</returns> public static MagickFormatInfo?Create(ReadOnlySpan <byte> data) { Throw.IfEmpty(nameof(data), data); var instance = new NativeMagickFormatInfo(); instance.GetInfoWithBlob(data, data.Length); return(Create(instance)); }
private static Dictionary <MagickFormat, MagickFormatInfo> LoadFormats() { var result = new Dictionary <MagickFormat, MagickFormatInfo>(); var list = IntPtr.Zero; var length = (UIntPtr)0; var instance = new NativeMagickFormatInfo(); try { list = instance.CreateList(out length); var ptr = list; MagickFormatInfo formatInfo; for (int i = 0; i < (int)length; i++) { instance.GetInfo(list, i); formatInfo = Create(instance); if (formatInfo != null) { result[formatInfo.Format] = formatInfo; } ptr = new IntPtr(ptr.ToInt64() + i); } /* stealth coders */ formatInfo = Create(instance, "DIB"); if (formatInfo != null) { result[formatInfo.Format] = formatInfo; } formatInfo = Create(instance, "TIF"); if (formatInfo != null) { result[formatInfo.Format] = formatInfo; } } finally { if (list != IntPtr.Zero) { NativeMagickFormatInfo.DisposeList(list, (int)length); } } return(result); }
private static void AddStealthCoders(NativeMagickFormatInfo instance, Dictionary <MagickFormat, MagickFormatInfo> formats) { var formatInfo = Create(instance, "DIB"); if (formatInfo != null) { formats[formatInfo.Format] = formatInfo; } formatInfo = Create(instance, "TIF"); if (formatInfo != null) { formats[formatInfo.Format] = formatInfo; } }
private static MagickFormatInfo Create(NativeMagickFormatInfo instance) { MagickFormatInfo formatInfo = new MagickFormatInfo(); formatInfo.Format = GetFormat(instance.Format); formatInfo.Description = instance.Description; formatInfo.CanReadMultithreaded = instance.CanReadMultithreaded; formatInfo.CanWriteMultithreaded = instance.CanWriteMultithreaded; formatInfo.IsMultiFrame = instance.IsMultiFrame; formatInfo.IsReadable = instance.IsReadable; formatInfo.IsWritable = instance.IsWritable; formatInfo.MimeType = instance.MimeType; formatInfo.Module = GetFormat(instance.Module); return(formatInfo); }
private static MagickFormatInfo Create(NativeMagickFormatInfo instance) { if (!instance.HasInstance) { return(null); } return(new MagickFormatInfo { Format = GetFormat(instance.Format), Description = instance.Description, CanReadMultithreaded = instance.CanReadMultithreaded, CanWriteMultithreaded = instance.CanWriteMultithreaded, IsMultiFrame = instance.IsMultiFrame, IsReadable = instance.IsReadable, IsWritable = instance.IsWritable, MimeType = instance.MimeType, ModuleFormat = GetFormat(instance.Module), }); }
private static Dictionary <MagickFormat, MagickFormatInfo> LoadFormats() { var formats = new Dictionary <MagickFormat, MagickFormatInfo>(); var list = IntPtr.Zero; var length = (UIntPtr)0; var instance = new NativeMagickFormatInfo(); try { list = instance.CreateList(out length); var ptr = list; for (int i = 0; i < (int)length; i++) { instance.GetInfo(list, i); var formatInfo = Create(instance); if (formatInfo != null) { formats[formatInfo.Format] = formatInfo; } ptr = new IntPtr(ptr.ToInt64() + i); } AddStealthCoders(instance, formats); } finally { if (list != IntPtr.Zero) { NativeMagickFormatInfo.DisposeList(list, (int)length); } } return(formats); }
private static MagickFormatInfo Create(NativeMagickFormatInfo instance, string name) { instance.GetInfoByName(name); return(Create(instance)); }
/// <summary> /// Unregisters this format. /// </summary> /// <returns>True when the format was found and unregistered.</returns> public bool Unregister() => NativeMagickFormatInfo.Unregister(EnumHelper.GetName(Format));