تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الحلقة التاسعة من السلسلة 167 حفظ الصور في تطبيق قواعد بيانات
#1
كاتب الموضوع : FlyToAbd

السلام عليكم ورحمة الله وبركاته
إن برامج قواعد البيانات لابد ما تحتوي على عناصر تكون من خصائصها الصورة، فإذا أضيفت صور العناصر إلى البرنامج تعتبر من الإمكانيات المكملة له
توجد طريقة بسيطة لحفظ الصور في نظام فيه قواعد بيانات وسريعة التنفيذ وهي ناجحة جدا وهي انك تضع صور الموظفين كملفات JPG في مجلد جنب قاعدة البيانات ويكون اسم الصورة مثلا Emp_234.Jpg للموظف الذي الرقم المعرف له 234 وبالبرنامج لما تستلم الصورة احفظها بالاسم المناسب كما مبين وبذلك المجلد وعند حذف الموظف احذف معه ملف الصورة
وانصح عند جلب الصورة لا تستخدم الفتح الاعتيادي اللي هو


كود :
Dim Img as new Bitmap("filename")
PictureBox1.Image= Img
لأن هذي الطريقة تجعل الملف يبقى غير قابل للتغير حتى ينتهي البرنامج يعني إذا استعرضت موظف معين ورأيت صورته لا تقدر على تغييرها لان الملف لا يمكن حذفه أو تغييره

الطريقة المثلى لجلب صورة من ملف خارجي هي

كود :
Public Function ImageFromFile )ByVal ImagePath As String) As Bitmap
Dim Ret As Bitmap = Nothing
Try
Dim fs As New System.IO.FileStream(ImagePath, IO.FileMode.Open, IO.FileAccess.Read)
Ret = System.Drawing.Image.FromStream(fs(
fs.Close()
Catch ex As Exception
End Try
Return Ret
End Function
ضع هذه الدالة في مكان عام واستدعيها ومرر لها اسم الملف بمساره ترجع لك الصورة من غير ما تحجز عليك

هذا الحل الفوري للمشكلة وأنصح به في في الاحوال التي لا تحتاج الى حماية الصور

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

ومن هنا أتوقع انه لا نستخدمها الا بالحالات الخاصة والضرورية والتي لا تحتاج الى تشفير

خلاصة عملية اضافة الصورة الى قاعدة البيانات تتلخص بتحويل الصورة الى مصفوفة بايتات وتحفظ البايتات هذه في قاعدة البيانات في الحقل المطلوب وعند استرجاع الصورة نجلب تلك البايتات ونحولها الى صورة كما في الاكواد التالية

كود :
Private Function ImageToByteArray(ByVal ImageIn As System.Drawing.Image) As Byte()
Dim ms As New IO.MemoryStream()
ImageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
Return ms.ToArray()
End Function
Private Function ByteArrayToImage(ByVal ByteArrayIn As Byte()) As Image
Dim ms As New IO.MemoryStream(ByteArrayIn)
Dim returnImage As Image = Image.FromStream(ms)
Return returnImage
End Function
الرد }}}
تم الشكر بواسطة: nabil1982


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [نقاش] نقاش حول تطبيق الفاتورة الإلكترونية فى السعودية المرحلة الثانية Zatca Integration AmrSobhy 0 1,003 11-11-22, 01:31 AM
آخر رد: AmrSobhy
Video [درس فيديو] تقارير الكريستال ريبورت وتغيير مسار الصور أثناء التشغيل رمضان272 0 1,613 28-03-22, 03:18 AM
آخر رد: رمضان272
  [شرح] اتصال بقاعدة بيانات اكسيس , اضافة بيان , تعديل بيان , حذف بيان , عرض البيانات . ahmed salam 25 38,262 23-02-22, 06:04 PM
آخر رد: رضوان الجماعي
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 19 34,371 20-02-22, 02:13 PM
آخر رد: رضوان الجماعي
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 5,867 30-07-21, 05:14 PM
آخر رد: kebboud
  الحلقة السابعة من السلسلة 167- استخراج جميع معلومات الجهاز RaggiTech 5 4,506 29-06-21, 05:29 AM
آخر رد: kebboud
  دمج قاعدة بيانات SQL Server 2008 مع المشروع بالـ VBNET snipercoder 4 8,211 12-11-20, 06:01 PM
آخر رد: lion4
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى SQL aljzazy 3 3,302 17-04-20, 09:27 PM
آخر رد: الوايلي
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى mysql aljzazy 0 2,319 10-04-20, 09:05 PM
آخر رد: aljzazy
  [VB.NET] كيفية استخدام اداوات ديف اكسبريس devexpressلادخال السجلات الى قاعدة بيانات نوع اكسس 13adam123 0 2,582 29-03-20, 12:50 PM
آخر رد: 13adam123

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم