02-10-12, 04:15 PM
كاتب الموضوع : 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