Convert Bitmap To Integer & Viceversa

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

لكن هل فكرت يوما في تخزين الصورة علي هيئة رقم ثم ومن هذا الرقم يتم استرجاع الصورة

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

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

الفكرة
فكرة هذا الموضوع تنحصر في تحويل الصورة إلي 
IntPtr أو الي Handle ثم يتم استخراج الصورة مرة أخري من هذا IntPtr

الخطوات التالية توضح كيفية تنفيذ الفكرة

أولا تحويل الصورة الي رقم
يتم تعريف متغير يعبر عن أي صورة
استخلاص IntPtr الخاص بتلك الصورة عن طريق استخدام الدالة Bitmap.GetHbitmap
 تحويل IntPtr الي رقم من النوع Int64 أو إلي  Int32

الدالة التالية توضح كيفية تحويل الصورة إلي رقم حيث يمكن لاحقا تخزين هذ الرقم في ملف بكل سهولة
Friend Function BitmapToInteger(bmp As Bitmap) As Integer
        Dim ptr As System.IntPtr System.IntPtr.Zero
        Dim result As Integer CType(NothingInteger)
        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 وهنا فقط علينا أن نمرر الرقم الذي حصلنا عليه من الخطوات أعلاه الي تلك الدالة
الدالة التالية توضح كيفية تحويل الرقم إلي صورة
Friend Function IntegerToBitmap(value As Integer) As Bitmap
        Return Bitmap
.FromHbitmap(value)
 
   End Function 
كيفية استخدام الكود
Dim bmp As Bitmap CType(My.Resources.ResourceManager.GetObject("TestingImage"), Bitmap)
 
       Dim bitmapInteger As Integer BitmapToInteger(bmp)


PictureBox1.Image CType(IntegerToBitmap(bitmapInteger), Bitmap

Comments

Popular posts from this blog

مقدمة الي تشفير الحروف الأبجدية العربية

VB.NET Translucent Control using GDI+

Add Custom Event to a Class in VB.NET