using System; using System.Globalization; using System.IO; using System.Windows; using System.Windows.Data; using System.Windows.Media.Imaging; namespace Crysome.Server.Converters; [ValueConversion(typeof(byte[]), typeof(BitmapImage))] public class ByteArrayToImageConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is byte[] array) || array.Length == 0) { return null; } try { BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = new MemoryStream(array); bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); ((Freezable)bitmapImage).Freeze(); return bitmapImage; } catch { return null; } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotSupportedException(); } }