private static async Task<LoadedImage> LoadImageUsingMagickNet(byte[] imageData) {
if (imageData == null || imageData.Length == 0) return null;
try {
string formatDescription = null;
if (ImageUtils.IsMagickSupported) {
var data = imageData;
imageData = await Task.Run(() => ImageUtils.LoadAsConventionalBuffer(data, true, out formatDescription));
}
var image = new BitmapImage();
using (var stream = new MemoryStream(imageData) {
Position = 0
}) {
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = null;
image.StreamSource = stream;
image.EndInit();
}
image.Freeze();
return new LoadedImage {
Image = image,
FormatDescription = formatDescription
};
} catch (Exception e) {
Logging.Warning(e);
return null;
}
}
}