معالجة الصور وتحسين جودتها تلقائياً باستخدام Python
هل سبق أن احتجت لتغيير حجم مئات الصور أو تحويل صيغتها أو إضافة علامة مائية لكل منها؟ بدلاً من إضاعة ساعات في برامج مثل Photoshop، يمكن لسكريبت Python بسيط إنجاز كل ذلك في ثوانٍ.
المكتبات الأساسية لمعالجة الصور في Python
Pillow (PIL)
أشهر وأبسط مكتبة لمعالجة الصور في Python.
pip install Pillow
OpenCV
مكتبة متقدمة لمعالجة الصور والرؤية الحاسوبية (Computer Vision).
pip install opencv-python
أمثلة عملية كاملة
1. فتح وعرض وحفظ صورة
from PIL import Image
# فتح الصورة
img = Image.open("photo.jpg")
# عرض معلومات الصورة
print(f"الحجم: {img.size}")
print(f"الصيغة: {img.format}")
print(f"النمط: {img.mode}")
# حفظ بصيغة مختلفة
img.save("photo.png")
2. تغيير حجم الصورة (Resize)
from PIL import Image
img = Image.open("photo.jpg")
# تغيير الحجم بدقة محددة
resized = img.resize((800, 600))
resized.save("photo_resized.jpg")
# تصغير مع الحفاظ على النسب
img.thumbnail((400, 400))
img.save("photo_thumbnail.jpg")
3. قص جزء من الصورة (Crop)
from PIL import Image
img = Image.open("photo.jpg")
# (left, top, right, bottom)
cropped = img.crop((100, 100, 500, 400))
cropped.save("photo_cropped.jpg")
4. تحويل الصورة لأبيض وأسود
from PIL import Image
img = Image.open("photo.jpg")
grayscale = img.convert("L")
grayscale.save("photo_grayscale.jpg")
5. إضافة علامة مائية نصية
from PIL import Image, ImageDraw, ImageFont
img = Image.open("photo.jpg")
draw = ImageDraw.Draw(img)
# إضافة نص
draw.text((50, 50), "matte3.com", fill=(255, 255, 255))
img.save("photo_watermark.jpg")
6. تعديل السطوع والتباين
from PIL import Image, ImageEnhance
img = Image.open("photo.jpg")
# زيادة السطوع (1.0 = طبيعي، 2.0 = مضاعف)
enhancer = ImageEnhance.Brightness(img)
bright = enhancer.enhance(1.5)
bright.save("photo_bright.jpg")
# زيادة التباين
contrast = ImageEnhance.Contrast(img).enhance(1.5)
contrast.save("photo_contrast.jpg")
7. معالجة مجموعة صور دفعة واحدة (Batch Processing)
هذا هو السحر الحقيقي لـ Python — معالجة مئات الصور دفعة واحدة:
from PIL import Image
import os
input_folder = "original_photos"
output_folder = "processed_photos"
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
if filename.endswith((".jpg", ".jpeg", ".png")):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
# تغيير الحجم
img.thumbnail((1200, 1200))
# حفظ بجودة محسّنة
output_path = os.path.join(output_folder, filename)
img.save(output_path, quality=85, optimize=True)
print(f"تمت معالجة: {filename}")
print("انتهت معالجة جميع الصور!")
8. تحسين جودة الصور بـ OpenCV
import cv2
import numpy as np
img = cv2.imread("photo.jpg")
# إزالة الضوضاء (Noise Reduction)
denoised = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)
# تحسين الحدة (Sharpening)
kernel = np.array([[0, -1, 0],
[-1, 5, -1],
[0, -1, 0]])
sharpened = cv2.filter2D(img, -1, kernel)
cv2.imwrite("photo_enhanced.jpg", sharpened)
أفكار مشاريع عملية
1. ضغط صور الموقع تلقائياً سكريبت يضغط كل صور مجلد ويحفظها بجودة مثلى للويب (أقل من 200KB).
2. تحويل دفعة صور لـ PDF
from PIL import Image
import os
images = []
for f in sorted(os.listdir("scans")):
if f.endswith(".jpg"):
images.append(Image.open(f"scans/{f}").convert("RGB"))
images[0].save("document.pdf", save_all=True, append_images=images[1:])
3. إضافة علامة مائية لكل صور موقع سكريبت واحد يضيف شعارك لكل صورة تنشرها.
نصائح لتحسين جودة الصور
- الحفظ بجودة 85: لا فرق مرئي عن 100% لكن الملف أصغر بـ 50%
- استخدم WebP: صيغة أحدث وأصغر من JPEG بـ 30%
- أبعاد مناسبة: لا تستخدم صورة 4000px في مكان 800px كافٍ
معالجة الصور بـ Python مهارة عملية جداً — سواء كنت مدوناً أو مصوراً أو مطور ويب.