• בלוג
  • שלוש דוגמאות פשוטות לעיבוד תמונות ב Python עם ספריית Pillow

שלוש דוגמאות פשוטות לעיבוד תמונות ב Python עם ספריית Pillow

20/04/2023

לא מזמן גיליתי את ספריית Pillow, שהיא ספריית פייתון עם API פשוט לעבודה על תמונות. בואו נראה 3 דוגמאות מדליקות לבעיות ש Pillow פותרת ברגע.

1. שינוי פורמט מ JPG ל PNG

משימה ראשונה היא שינוי פורמט של תמונה, למשל אם יש לי אוסף של תמונות בפורמט png ואני צריך להפוך את כולן לפורמט jpg. בפייתון אחרי התקנת pillow אוכל להפעיל:

from PIL import Image
import glob, os

for infile in glob.glob("*.jpg"):
    file, ext = os.path.splitext(infile)
    with Image.open(infile) as im:
        im.save(infile.replace('.jpg', '.png'), 'PNG')

ולקבל בתיקיה עותק png של כל תמונת jpg שהיתה שם.

2. הוספת טקסט לתמונה

משימה שניה היא להוסיף טקסט לתמונות, למשל אם יש לי ערימה של תמונות ואני רוצה להוסיף כיתוב על כל אחת מהן. בפייתון זה יהיה בסך הכל:

from PIL import Image, ImageDraw, ImageFont

image = Image.open("image.jpg")
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("arial.ttf", 36)
draw.text((10, 10), "Hello, World!", font=font, fill=(255, 255, 255))
image.save('image.jpg')

הקוד בדוגמה יכתוב את הטקסט Hello, World בתמונה ששמה image.jpg. אפשר כמובן לשלב עם הדוגמה הקודמת כדי לרוץ בלולאה על כל התמונות בתיקיה.

3. יצירת גירסה קטנה לכל תמונה

הפונקציה thumbnail מקבלת גודל ומייצרת גירסה מוקטנת בגודל שהועבר, או יותר קטן אם צריך בשביל לשמור על ה Aspect Ratio. בדוגמה האחרונה אני מפעיל אותה בלולאה כדי לקבל גירסאות מוקטנות של כל הקבצים בתיקיה:

from PIL import Image
import glob, os

size = 128, 128

for infile in glob.glob("*.jpg"):
    file, ext = os.path.splitext(infile)
    with Image.open(infile) as im:
        im.thumbnail(size)
        im.save(file + ".thumbnail.jpg", "JPEG")

ספריית Pillow גם מאפשרת לכם להגיע לביטים של התמונה, להריץ אפקטים או לחפש תבניות בתמונה. בזכות התקנה פשוטה וממשק נוח מפייתון היא ספריה שתמיד כיף לחזור אליה.