الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفيه عرض الصور المخزنه في قاعده البيانات للمستخدم

بدأه eng logo في 26 مارس 2010 · 2 رد · 2,560 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم استخدم لغه سي شارب 2008عندي قاعده بيانات مخزن فيها عدد كبير من الصور للمفروشات بحيث اذا اراد المستخدم ان يختار اي نوع من الاثاث مثلا غرف طعام تعرض له القاعده جميع صور غرف الطعام فكيف افعل ذلك في قاعده البيانات الرجاء مساعدتي بهذا الموضوع

#2

اولا نصيحة مني لاتقوم بتخزين الصور في قاعدة البيانات مباشرة الافضل تخزين مسار الصورة في قاعدة البيانات وتحفظ الحقل عادي من نوع نص والصور جميعها ضعها في مجلد resourceالتابع للبرنامج حقك واستدعي الصورة عادي

مثلا أفترض انك لديك صورة اسمها image1.png وهذه الصورة موجودة بالفعل في Resources المشروع

(My.Resources.Image1)

وإن شاء الله تمشي معك

#3

السلام عليكم و رحمة الله و بركاته.

اولا" :كود حفظ الصورة:

قبل كل شئ لابد ان يكون لديك جدول في قاعدة البيانات به حقل لحفظ الصور، هذا الحقل لابد ان يكون من النوع image

Bitmap image = new Bitmap(openFileDialog1.OpenFile());
        	MemoryStream ms = new MemoryStream();
        	image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        	byte[] pic = ms.ToArray();

1-في البداية نفوم بإنشاء كائن من النوع Bitmap، هذا الكائن مسئول عن العمليات التي تجري على الصور مثل تعديل مقاساتها أو جعل الصورة مقلوبة او معرفة pixelds الخاصة بالصورة، سيكون مسار الصورة عن طريق إختيار مسارها من الجهاز بواسطة الأداة OpenFileDialog

2-ثم نقوم بإنشاء كائن من النوع memorystream و هو كائن سينشئ الصورة في الذاكرة و ليس في ملف حقيقي.

3-نمرر باراميترات للوظيفة save و هي مكان حفظ الصورة(الكائن ms) و نوع الصورة jpeg

4-ننشئ المصفوفة pic من النوع byte، حيث سنحول الصورة المخزنة في الذلكرة عن طريق الكائن ms إلى بايتات حتى يمكن حفظها في قاعدة البيانات

5-ثم كود الحفظ في قاعدة البيانات و هو ليس بحاجة للشرح، لاحظ أن البارامتر @logo ستكون قيمته هي المصفوفة pic

        	SqlCommand com = new SqlCommand();
        	com.Connection = con;
        	com.CommandType = CommandType.StoredProcedure;
        	com.CommandText = "Tournament_Insert";
        	com.Parameters.Add("@tour_name", SqlDbType.NVarChar);
        	com.Parameters.Add("@type_id", SqlDbType.Int);
   	com.Parameters.Add("@logo", SqlDbType.Image);
        	com.Parameters[0].Value = txtbox1.Text;
        	com.Parameters[1].Value = (int)combobox1.SelectedValue;
   		 com.Parameters[2].Value = pic;
        	con.Open();
        	com.ExecuteNonQuery();
        	con.Close();

ثانيا": كود استرجاع الصورة من قاعدة البيانات:

SqlCommand cmdSelect = new SqlCommand("select image from images_table where ID=@ID", con);
            	cmdSelect.Parameters.Add("@ID", SqlDbType.Int,4);
            	cmdSelect.Parameters["@ID"].Value = (int)combo_tour.SelectedValue;


  con.Open();

            	byte[] barrImg = (byte[])cmdSelect.ExecuteScalar();
     		string strfn = Convert.ToString(DateTime.Now.ToFileTime());
            	FileStream fs = new FileStream(strfn,FileMode.CreateNew, FileAccess.Write);
            	fs.Write(barrImg, 0, barrImg.Length);
            	fs.Flush();
            	fs.Close();
            	picture_logo .Image = Image.FromFile(strfn);
            	con.Close();

1-في السطر الأول سنقوم بتحويل البيانات الراجعة من قاعدة البيانات إلى صورتها الأصلية على شكل بايتات عن طريق غنشاء المصفوفة barrImg من النوع byte.

2-سننشئ المتغير strfn و هو متغير يعبر عن مسار أحد الملفات النظام الخاصة بالوفت الحالي.

3-ننشئ كائن من النوع FileStream، و هذا الكائن سيقوم بإنشاء ملف في المسار strfn

4-سيقوم الكائن fs بكتابة مصفوفة البايتات barrImg إلى مسار الملف، أي تحويل هذه البايتات إلى صورة حقيقيةز

5- بعد ذلك سيقوم الكائن fs بمسح البايتات من الذاكرة.

أرجو التوفيق لك

تم تعديل هذه المشاركة بواسطة بهاء صلاح الدين فراج في 30 مارس 2010 في 18:08

2

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…