- بواسطة x32x01 ||
يعني إيه أصلًا “ضغط بيانات”؟
بص يا صاحبي… كل يوم وإنت بتستخدم الموبايل أو الكمبيوتر، فيه عمليات بتحصل في الخلفية وانت مش واخد بالك. من أهم العمليات دي هي ضغط البيانات.سواء بتبعت صورة على واتساب، أو بترفع ملف لـ Google Drive، أو حتى بتصور فيديو… كل ده بيعدّي على مرحلة ضغط علشان المساحة تقل والتحميل يبقى أسرع.
الصيغ المشهورة زي ZIP - RAR - JPEG - MP3
مش أكتر من شوية رياضيات معمولين بذكاء يخلو البيانات أخف من غير ما تضيع جودتها بشكل كبير.
خلّينا نشرح الموضوع بطريقة بسيطة… وبأمثلة من الحياة.
الضغط = ترتيب شنطة السفر بطريقة ذكية 
تخيل إنك مسافر ومحتاج تلم هدوم كتير في شنطة صغيرة.هتعمل إيه؟
هتطوي، ترتّب، تشيل الزيادة… وتضغط الحاجة على قد ما تقدر.
الخوارزميات بتاعة الضغط بتعمل نفس الفكرة:
- تشوف إيه اللي متكرر.
- تشيل الحاجات اللي مالهاش لازمة.
- وتعيد تمثيل البيانات بشكل أصغر.
ضغط بدون فقدان (Lossless) - اللي بيحصل جوه ZIP 
لما تضغط ملف ZIP، الخوارزمية بتشتغل بمنطق بسيط جدًا:يعني مثلاً لو عندك النص ده:
BONJOURBONJOURBONJOURبدل ما تكتبه 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]الخوارزمية تقول:
النتيجة؟
مثال كود بايثون بسيط لتطبيق 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) خلاصة الكلام 
فكرة الضغط كلها ببساطة:كل مرة:
- تضغط ملف ZIP
- تبعت صورة
- تسمع MP3
- ترفع فيديو
- تفتح تطبيق بيحمل بيانات بسرعة
وفي المرة الجاية لما تضغط ملف… قول لنفسك:
وده هو جمال علوم الحاسب