Есть бд MSSQL в ней таблица в которой в поле Logo типа Image хранятся изображения формата jpeg(да, я знаю что так делать не есть хорошо но у меня такое тз). В шарпе работаю c LINQ. Крч мне нужно вывести картинку в элемент Image. Для этого нужен конвертер byte[] to Image, а всё что гуглил огромное и страшное. Если у вас есть какие либо конвертеры покидайте пожалуйста (преимущественно интересуют элегантные и простые решения, но можно покидать и простые народные). Буду очень благодарен. Раньше на винформах юзал вот такое:
public static Image byteArrToImage(byte[] byteArr)
{
MemoryStream ms = new MemoryStream(byteArr);
Image pict = Image.FromStream(ms);
return pict
}
Ну например так:
class FromBytesExtension : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(value is byte[] bytes) || LicenseManager.UsageMode == LicenseUsageMode.Designtime)
return null;
var image = new BitmapImage();
using (var mem = new MemoryStream(bytes))
{
mem.Position = 0;
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = null;
image.StreamSource = mem;
image.EndInit();
}
image.Freeze();
return image;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
=> throw new NotImplementedException();
public override object ProvideValue(IServiceProvider serviceProvider) => this;
}
Само преобразование взял c EnSO.
Пару пояснений:
value is byte[] bytes
- проверяем на тип входных данных, если не byte[]
, то возвращаем null
.LicenseManager.UsageMode == LicenseUsageMode.Designtime
- Запрещаем дизайнеру Vusial Studio работать с этим классом, возвращая при этом null
.Также хочу заметить, что тут используется MarkupExtension
, который в данном случае позволяет просто не делать нудный ресурс конвертера. Можете смело от него отказаться, но не забудьте добавить ресурс в XAML.
Использование:
<Image Source="{Binding Bytes, Converter={cw:FromBytes}}"/>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Столкнулся с проблемой в создании ссылки на определенный сайт с помощью кнопки в WPF, можно ли вообще её как-нибудь сделать, или нет? Если можно,...
Есть модельС формы отправляется ajax запросом несколько полей с такими же названиями как и у свойств модели
Необходимо правильно масштабировать ползунокЗадача следующая, при перемещении ползунка с диапазоном от 0 до 10 необходимо менять цвет кнопки
При попытке обновления базы данных, получаю вот такую ошибку в диспетчере пакетов