- بواسطة x32x01 ||
✨ إزاي بيحصل ضغط البيانات فعليًا؟ وليه بنحتاج ZIP و RAR و MP3 و JPEG في كل حاجة بنعملها؟
سواء بتبعت صورة على واتساب، أو بترفع ملف لـ Google Drive، أو حتى بتصور فيديو… كل ده بيعدّي على مرحلة ضغط علشان المساحة تقل والتحميل يبقى أسرع.
الصيغ المشهورة زي ZIP - RAR - JPEG - MP3
مش أكتر من شوية رياضيات معمولين بذكاء يخلو البيانات أخف من غير ما تضيع جودتها بشكل كبير.
خلّينا نشرح الموضوع بطريقة بسيطة… وبأمثلة من الحياة.
هتعمل إيه؟
هتطوي، ترتّب، تشيل الزيادة… وتضغط الحاجة على قد ما تقدر.
الخوارزميات بتاعة الضغط بتعمل نفس الفكرة:
👉 “لو في معلومة متكررة… بلاش نكتبها كل مرة.”
يعني مثلاً لو عندك النص ده:
بدل ما تكتبه 3 مرات، الخوارزمية تقول:
➡️ BONJOUR × 3
وده اللي بتعمله خوارزمية LZ77.
النتيجة؟
النتيجة:
طبعًا الضغط الحقيقي أعقد من كده بكتير… بس المثال بيوضح الفكرة بمنتهى السهولة.
طيب… إزاي نقلل حجمها من غير ما الجودة تقع؟
هنا يجيلك دور التحويل الرياضي الأسطوري:
DCT - Discrete Cosine Transform
ببساطة… تخيّل إن الصورة زي الأغنية، فيها:
التحويل ده بياخد كل جزء صغير من الصورة ويفصله لترددات:
JPEG يعمل حركة ذكية:
👉 يمسح الترددات الضعيفة لأنها مش مهمة للعين.
مثال توضيحي:
قبل التحويل:
بعد DCT:
الخوارزمية تقول:
➡️ "الصفر والـ 1 والـ -3… مش هيفرقوا!"
النتيجة؟
📉 الصورة بتخس أكتر من النص!
ده مجرد مثال صغير يوضح لك تحويل جزء من الصورة، والعمليات الحقيقية بتكون أكبر بكتير.
دي خليط بين:
➡️ لو في صوت ضعيف جدًا… ودنك مش هتسمعه → نحذفه.
➡️ لو في صوت قوي مغطّي صوت تاني → نمسح الضعيف.
كده الملف يبقى صغير جدًا بدون تأثير واضح على الجودة.
النتيجة هتوريك قد إيه الحجم قل بدون فقدان البيانات.
👉 80% رياضيات
👉 20% حيل ذكية
كل مرة:
وفي المرة الجاية لما تضغط ملف… قول لنفسك:
➡️ “أنا لسه مستخدم تقنية رياضية قوية من غير ما أخد بالي.”
وده هو جمال علوم الحاسب ❤️💻
يعني إيه أصلًا “ضغط بيانات”؟ 🤔
بص يا صاحبي… كل يوم وإنت بتستخدم الموبايل أو الكمبيوتر، فيه عمليات بتحصل في الخلفية وانت مش واخد بالك. من أهم العمليات دي هي ضغط البيانات.سواء بتبعت صورة على واتساب، أو بترفع ملف لـ Google Drive، أو حتى بتصور فيديو… كل ده بيعدّي على مرحلة ضغط علشان المساحة تقل والتحميل يبقى أسرع.
الصيغ المشهورة زي ZIP - RAR - JPEG - MP3
مش أكتر من شوية رياضيات معمولين بذكاء يخلو البيانات أخف من غير ما تضيع جودتها بشكل كبير.
خلّينا نشرح الموضوع بطريقة بسيطة… وبأمثلة من الحياة.
الضغط = ترتيب شنطة السفر بطريقة ذكية 🎒✨
تخيل إنك مسافر ومحتاج تلم هدوم كتير في شنطة صغيرة.هتعمل إيه؟
هتطوي، ترتّب، تشيل الزيادة… وتضغط الحاجة على قد ما تقدر.
الخوارزميات بتاعة الضغط بتعمل نفس الفكرة:
- تشوف إيه اللي متكرر.
- تشيل الحاجات اللي مالهاش لازمة.
- وتعيد تمثيل البيانات بشكل أصغر.
ضغط بدون فقدان (Lossless) - اللي بيحصل جوه ZIP 📦💡
لما تضغط ملف ZIP، الخوارزمية بتشتغل بمنطق بسيط جدًا:👉 “لو في معلومة متكررة… بلاش نكتبها كل مرة.”
يعني مثلاً لو عندك النص ده:
BONJOURBONJOURBONJOURبدل ما تكتبه 3 مرات، الخوارزمية تقول:
➡️ BONJOUR × 3
وده اللي بتعمله خوارزمية LZ77.
النتيجة؟
- النص الأصلي = 21 حرف
- بعد الضغط = 8 حروف بس
والفرق ده ضخم!
مثال برمجي بسيط يشرح فكرة كشف التكرار 🔍💻
ده مثال Python يبيّن الفكرة بشكل بسيط جدًا: Python:
def simple_compress(text):
result = []
i = 0
while i < len(text):
count = 1
while i + 1 < len(text) and text[i] == text[i+1]:
count += 1
i += 1
result.append(f"{text[i]}{count}")
i += 1
return "".join(result)
print(simple_compress("AAAAABBBCCDAA")) A5B3C2D1A2طبعًا الضغط الحقيقي أعقد من كده بكتير… بس المثال بيوضح الفكرة بمنتهى السهولة.
ضغط الصور JPEG - تحويل البكسلات لترددات 🎨📷
الصورة عبارة عن ملايين البكسلات.طيب… إزاي نقلل حجمها من غير ما الجودة تقع؟
هنا يجيلك دور التحويل الرياضي الأسطوري:
DCT - Discrete Cosine Transform
ببساطة… تخيّل إن الصورة زي الأغنية، فيها:
- Bass
- Mid
- Treble
التحويل ده بياخد كل جزء صغير من الصورة ويفصله لترددات:
- الترددات الضعيفة → تفاصيل صغيرة مش بتبان للعين.
- الترددات القوية → التفاصيل اللي عينك بتشوفها بوضوح.
JPEG يعمل حركة ذكية:
👉 يمسح الترددات الضعيفة لأنها مش مهمة للعين.
مثال توضيحي:
قبل التحويل:
[150, 155, 160, 152, 148, 140, 135, 130]بعد DCT:
[120 (مهم), 8, -3, 1, 0, 0, 0, 0]الخوارزمية تقول:
➡️ "الصفر والـ 1 والـ -3… مش هيفرقوا!"
النتيجة؟
📉 الصورة بتخس أكتر من النص!
مثال كود بايثون بسيط لتطبيق DCT على جزء من الصورة 🧠💻
Python:
import cv2
import numpy as np
img = cv2.imread("test.jpg", 0)
block = img[0:8, 0:8]
dct_block = cv2.dct(np.float32(block))
print(dct_block) ضغط الصوت MP3 - حذف اللي ودنك مش هتسمعه 🎧👂
الفكرة العبقرية في MP3 مش رياضيات بس…دي خليط بين:
- علم السمع (Psychoacoustics)
- منطق
- رياضيات
➡️ لو في صوت ضعيف جدًا… ودنك مش هتسمعه → نحذفه.
➡️ لو في صوت قوي مغطّي صوت تاني → نمسح الضعيف.
كده الملف يبقى صغير جدًا بدون تأثير واضح على الجودة.
أمثلة حقيقية قبل / بعد الضغط 📉📸🎧
صورة موبايل عادية:
- الحجم الأصلي: 12MB
- بعد JPEG: 2.1MB
➡️ انخفاض 82%
ملف صوت WAV:
- الحجم الأصلي: 50MB
- بعد MP3: 5MB
➡️ انخفاض 90%
طب وإحنا كمبرمجين… نستفيد إزاي؟ 🧑💻🔥
معرفة أساسيات الضغط بتفيدك في:- تصميم أنظمة رفع ملفات
- تحسين أداء مواقع الويب
- فهم معالجة الصور والصوت
- بناء تطبيقات أسرع بأقل استهلاك للبيانات
- تحليل البيانات وتقليل حجمها
- الأنظمة بتستخدم ضغط علشان تخفي البيانات بطريقة معينة (جزء من بعض أنواع Steganography).
مثال برمجي: ضغط بسيط باستخدام zlib في بايثون 🧪🐍
Python:
import zlib
text = b"HelloHelloHelloHelloHello"
compressed = zlib.compress(text)
decompressed = zlib.decompress(compressed)
print("Original:", len(text))
print("Compressed:", len(compressed))
print("Decompressed:", decompressed) خلاصة الكلام 👏✨
فكرة الضغط كلها ببساطة:👉 80% رياضيات
👉 20% حيل ذكية
كل مرة:
- تضغط ملف ZIP
- تبعت صورة
- تسمع MP3
- ترفع فيديو
- تفتح تطبيق بيحمل بيانات بسرعة
وفي المرة الجاية لما تضغط ملف… قول لنفسك:
➡️ “أنا لسه مستخدم تقنية رياضية قوية من غير ما أخد بالي.”
وده هو جمال علوم الحاسب ❤️💻