Добрый день.
У меня есть картинки в byte[] в поле varbinary[MAX] поле картинка записана в таком формате 0x3C8F490C0000000148454E45AE426182
Загружаю я их туда через Drawing.Image
Потом достаю из базы и пытаюсь показать картинку так
1 вариант
<Image Name="IMGPerson" Source="{Binding ImagePerson}"/>
т.е. просто Binding к полю byte[] ImagePerson ничего не происходит, просто привязки нет и всё. Ошибок никаких
2 вариант делаю так: Присваиваю Source вручную
IMGPerson.Source = ImageInByte.ImageFromBuffer(_obsMyData[0].ImagePerson);
public static BitmapImage ImageFromBuffer(Byte[] bytes)
{
MemoryStream stream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
return image;
}
Ничего пишет ошибку
Дополнительные сведения: Не удалось обнаружить компонент обработки изображений, который подходит для завершения данной операции.
Та же ошибка в 3 варианте когда делаю привязку через Converter
3 вариант
<Image x:Name="IMGPerson" Source="{Binding ImagePerson, Converter={StaticResource DrawImageToMediaImage}, Mode=TwoWay}"
[ValueConversion(typeof(System.Drawing.Image), typeof(System.Windows.Media.ImageSource))]
public class DrawImageToMediaImage : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value == null) { return null; }
var image = (System.Drawing.Image)value;
var bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.BeginInit();
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Bmp);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
bitmap.StreamSource = memoryStream;
bitmap.EndInit();
return bitmap;
}
Чувствую что речь про разные Image Есть Drawing.Image есть Media.Image
Загрузка самой картинки в <Image/>
System.Drawing.Image img = System.Drawing.Image.FromStream(fs);
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.Position = 0;
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
IMGPerson.Source = bi;
Как правильно загрузить картинку?
Спасибо