ذخیره و بازیابی تصویر در Wpf

آموزش + تکه کد های مربوط به ذخیره و بازیابی تصویر از دیتابیس در زبان برنامه نویسی wpf

برای اولین بار در بین تمام سایت های برنامه نویسی ایران منتشر شد.

مدرس : کیوان زینی - اسفند 1398


فایل PDF آموزش ذخیره و بازیابی تصویر در wpf

حجم : 689 کیلوبایت


شروع آموزش :

1 – ابتدا پایگاه داده خود را در SQL Server طراحی می کنیم.
برای فیلدی که قصد قرار دادن تصویر در آن را داریم نوع داده ای آن را از نوع image انتخاب می کنیم.

نام جدول را هم به عنوان مثال : Tbl_Person انتخاب می کنیم .

2 – وارد نرم افزار Visual Studio می شویم .
فرم مربوطه را که میخواهیم عملیات در آن انجام پذیرد را باز می کنیم .
در قسمت کنترل های فرم ، کنترل Image را به نرم افزار اضافه می کنیم .
نام تصویر را انتخاب می کنیم : به عنوان مثال imgPerson
سپس برای انتخاب تصویر هم می توانیم به دو روش زیر عمل کنیم :
یا یک دکمه به فرم اضافه کنیم و یا می توانیم در رویداد کلیک تصویر کد مربوط به انتخاب تصویر را بنویسیم .
سپس برای انتخاب تصویر از کد زیر استفاده میکنیم :

OpenFileDialog op = new OpenFileDialog();
op.Title = "Select a picture";
op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" + "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" + "Portable Network Graphic (*.png)|*.png";
if (op.ShowDialog() == true)
{
imgPerson.Source = new BitmapImage(new Uri(op.FileName));
}

3 – برای ذخیره و بازیابی تصویر از دیتابیس ، ابتدا Using های زیر را در قسمت بالای صفحه کد فرم مورد نظر  تعریف می کنیم .

using System.IO;

using System.Drawing;

using System.Windows.Media.Imaging;

سپس از طریق تکنولوژی Entity Freamwork جدول مربوطه را به پروژه اضافه می کنیم .
در قسمت کد فرم یک نوع از دیتابیس خودمان رو می سازیم : به عنوان مثال نام دیتابیس DB است.

DB db = new DB();

4 – برای ذخیره کردن تصویر در دیتابیس ابتدا باید تابع زیر را تعریف کنیم :

private byte[] BitmapSourceToByteArray(BitmapSource image)

{

 using (var stream = new MemoryStream())

 {

 var encoder = new PngBitmapEncoder();

 encoder.Frames.Add(BitmapFrame.Create(image));

 encoder.Save(stream);

 return stream.ToArray();

 }

}

سپس در قسمت کنترل های فرم ، دکمه جدیدی را با عنوان ثبت تصویر به فرم اضافه می کنیم و نام آنرا btnSave قرار می دهیم.
بر روی دکمه ثبت تصویر کلیک می کنیم و کد زیر را در آن قرار می دهیم :

var imageBuffer = BitmapSourceToByteArray((BitmapSource)imgPerson.Source);

Tbl_Person person = new Tbl_Person

 {

   Dr_Picture = imageBuffer

 };

db.Tbl_ Person.Add(person);

db.SaveChanges();

تبریک میگم . شما در حال حاضر توانستید تصویر مربوطه خود را در دیتابیس ذخیره کنید.

5 – برای بازیابی عکس در دیتابیس نیز می توانید با استفاده از دو روشی که برای ذخیره تصویر نام بردیم استفاده کنید و سپس در صفحه کد ، کد های زیر را بنویسید :

var qpic = db.Tbl_Person.Where(a => a.Dr_ID == 1).SingleOrDefault().Dr_Picture;

 byte[] data = qpic;

 MemoryStream strm = new MemoryStream();

 strm.Write(data, 0, data.Length);

 strm.Position = 0;

 Image img = Image.FromStream(strm);

 BitmapImage bi = new BitmapImage();

 bi.BeginInit();

 MemoryStream ms = new MemoryStream();

 img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);

 ms.Seek(0, SeekOrigin.Begin);

 bi.StreamSource = ms;

 bi.EndInit();

 imgPerson.Source = bi;

در خط اول کد بالا Dr_ID را بطور پیشفرض برای تست 1 قرار داده ایم .
برای اینکه تصویر هر کاربر مربوطه را بخواهید مشاهده کنید باید کد مربوطه به همان کاربر را به این بخش ارسال کنید و سپس خروجی بگیرید.

موفق باشید !

کیوان زینی ، اسفند ماه 1398

منتظر سورس کد همین پروژه در وبلاگ شخصی کیوان زینی باشید.

این پروژه برای اولین بار در وبلاگ شخصی کیوان زینی منتشر شده است.
* اولین ارائه دهنده آموزش ذخیره و بازیابی تصویر از دیتابیس در زبان برنامه نویسی WPF در بین تمام سایت های برنامه نویسی ایرانی *