private static LoadedImage LoadImageUsingDirectX(BaseRenderer renderer, byte[] imageData) {
if (imageData == null || imageData.Length == 0) return null;
try {
Format format;
var pngData = TextureReader.ToPng(renderer.DeviceContextHolder, imageData, true, out format);
var image = new BitmapImage();
using (var stream = new MemoryStream(pngData) {
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 = format.ToString()
};
} catch (Exception e) {
Logging.Warning(e);
return null;
}
}