24-03-16, 08:08 PM
(آخر تعديل لهذه المشاركة : 24-03-16, 08:42 PM {2} بواسطة silverlight.)
السلام عليكم ورحمة الله وبركاته
هناك أساليب كثيرة لتخزين الصورة في ملف أو لتخزين الصورة في قواعد البيانات و أحد هذا الأساليب هو تخزين الصورة علي هيئة مصفوفة من البايت ثم استرجاعها عن طريق تحويل مصفوفة البايت الي صورة
لكن هل فكرت يوما في تخزين الصورة علي هيئة رقم ثم ومن هذا الرقم يتم استرجاع الصورة
في هذا الموضوع سيتم توضيح كيفية تحويل الصورة الي رقم حيث يمكن وبكل سهولة تخزين الرقم في ملف عادي او في ملف قواعد البيانات الخاصة بك ثم و عندما تريد إظهار الصورة مرة أخري تقوم بتحويل الرقم الذي تم تخزينه الي صورة مرة أخري
أهم مميزات الفكرة هذه هي أنك تستطيع أن تخزن الصور بدون استهلاك اي مساحة علي الهارد ديسك او استهلاك مساحة في ملف الداتا بيز أيضا هذا الموضوع مفيد جدا لمن يريدون تحويل الصور الي فيديو
الفكرة
فكرة هذا الموضوع تنحصر في تحويل الصورة الي IntPtr أو الي Handle ثم يتم استخراج الصورة مرة أخري من هذا IntPtr
الخطوات التالية توضح كيفية تنفيذ الفكرة
أولا تحويل الصورة الي رقم
1- يتم تعريف متغير يعبر عن أي صورة
2- استخلاص IntPtr الخاص بتلك الصورة عن طريق استخدام الدالة Bitmap.GetHbitmap
3- تحويل IntPtr الي رقم من النوع Int64 أو إلي Int32
[b]
الدالة التالية توضح كيفية تحويل الصورة إلي رقم حيث يمكن لاحقا تخزين هذ الرقم في ملف بكل سهولة[/b]
ثانيا تحويل الرقم الي صورة
هذا الأمر يحدث باستخدام الدالة Image.FromHbitmap وهنا فقط علينا أن نمرر الرقم الذي حصلنا عليه من الخطوات أعلاه الي تلك الدالة
الدالة التالية توضح كيفية تحويل الرقم إلي صورة
كيفية استخدام الكود
أتمني ان الموضوع يكون مفيدا لكم
تقبلو تحياتي
هناك أساليب كثيرة لتخزين الصورة في ملف أو لتخزين الصورة في قواعد البيانات و أحد هذا الأساليب هو تخزين الصورة علي هيئة مصفوفة من البايت ثم استرجاعها عن طريق تحويل مصفوفة البايت الي صورة
لكن هل فكرت يوما في تخزين الصورة علي هيئة رقم ثم ومن هذا الرقم يتم استرجاع الصورة
في هذا الموضوع سيتم توضيح كيفية تحويل الصورة الي رقم حيث يمكن وبكل سهولة تخزين الرقم في ملف عادي او في ملف قواعد البيانات الخاصة بك ثم و عندما تريد إظهار الصورة مرة أخري تقوم بتحويل الرقم الذي تم تخزينه الي صورة مرة أخري
أهم مميزات الفكرة هذه هي أنك تستطيع أن تخزن الصور بدون استهلاك اي مساحة علي الهارد ديسك او استهلاك مساحة في ملف الداتا بيز أيضا هذا الموضوع مفيد جدا لمن يريدون تحويل الصور الي فيديو
الفكرة
فكرة هذا الموضوع تنحصر في تحويل الصورة الي IntPtr أو الي Handle ثم يتم استخراج الصورة مرة أخري من هذا IntPtr
الخطوات التالية توضح كيفية تنفيذ الفكرة
أولا تحويل الصورة الي رقم
1- يتم تعريف متغير يعبر عن أي صورة
2- استخلاص IntPtr الخاص بتلك الصورة عن طريق استخدام الدالة Bitmap.GetHbitmap
3- تحويل IntPtr الي رقم من النوع Int64 أو إلي Int32
[b]
الدالة التالية توضح كيفية تحويل الصورة إلي رقم حيث يمكن لاحقا تخزين هذ الرقم في ملف بكل سهولة[/b]
PHP كود :
Friend Function BitmapToInteger(bmp As Bitmap) As Integer
Dim ptr As System.IntPtr = System.IntPtr.Zero
Dim result As Integer = CType(Nothing, Integer)
If bmp IsNot Nothing Then
ptr = bmp.GetHbitmap()
End If
result = ptr.ToInt32
' OR, you may use
'result = ptr.ToInt64
If ptr <> IntPtr.Zero Then
ptr = IntPtr.Zero
End If
Return result
End Function
ثانيا تحويل الرقم الي صورة
هذا الأمر يحدث باستخدام الدالة Image.FromHbitmap وهنا فقط علينا أن نمرر الرقم الذي حصلنا عليه من الخطوات أعلاه الي تلك الدالة
الدالة التالية توضح كيفية تحويل الرقم إلي صورة
PHP كود :
Friend Function IntegerToBitmap(value As Integer) As Bitmap
Return Bitmap.FromHbitmap(value)
End Function
كيفية استخدام الكود
PHP كود :
Dim bmp As Bitmap = CType(My.Resources.ResourceManager.GetObject("TestingImage"), Bitmap)
Dim bitmapInteger As Integer = BitmapToInteger(bmp)
PictureBox1.Image = CType(IntegerToBitmap(bitmapInteger), Bitmap)
أتمني ان الموضوع يكون مفيدا لكم
تقبلو تحياتي