none
WPF sqlden resim çekme RRS feed

  • Soru

  • merhabalar sqlden wpf üzerindeki image nesnesine önceden kaydettiğim resmi çekmek istiyorum 

    eğer neden resmi değilde resmin yolunu kaydetmiyorsunuz diye sorarsanız bazı sebepleim var ve nasıl yapıldığını öğrenmek istiyorum ...

    size resmi kaydettiğim kodu vereyim 

     FileStream fs = new FileStream(resimYolu, FileMode.Open, FileAccess.Read);
                        BinaryReader br = new BinaryReader(fs);
                        byte[] resim = br.ReadBytes((int)fs.Length);
                        br.Close();
                        fs.Close();
    
    
    ....Add("@Resim", SqlDbType.Image, resim.Length).Value = resim;


    14 Ekim 2012 Pazar 17:37

Yanıtlar

  • Kaydettiğin resmi veritabanından byte array olarak oku. Daha sonra aşağıdaki gibi byte array'i  BitmapSource'a dönüştüren bir Value Converter yaz. Son olarak da byte array değişkenini converter ile beraber image kontrolüne bind et.

    [C#]

    [ValueConversion(typeof(byte[]), typeof(BitmapSource))]
    public class ByteArrayToImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            byte[] bytes = (byte[]) value;
            using (MemoryStream ms = new MemoryStream(bytes))
            {
                BitmapImage image = new BitmapImage();
                image.BeginInit();
                image.StreamSource = ms;
                image.EndInit();
                return image;
            }
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            BitmapSource image = (BitmapSource) value;
            BitmapEncoder encoder = new PngBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(image));
            using (MemoryStream ms = new MemoryStream())
            {
                encoder.Save(ms);
                return ms.ToArray();
            }
        }
    }

    [XAML]

    <Image Source={Binding Resim, Converter={StaticResource ByteArrayToImage}}/>
    14 Ekim 2012 Pazar 20:02
    Moderatör