עבודה עם תמונות ב-Python

עבודה עם תמונות ב-Python

PIL היא ספריית הדמיה של Python המספקת למפרשן הפיתון יכולות עריכת תמונות. הוא פותח על ידי פרדריק לונד ועוד כמה תורמים. הכרית היא מזלג ה-PIL הידידותי וספרייה קלה לשימוש שפותחה על ידי אלכס קלארק ותורמים אחרים. נעבוד עם כרית.

הַתקָנָה:

  • לינוקס: במסוף לינוקס הקלד את הדברים הבאים:
     pip install Pillow  התקנת pip באמצעות טרמינל:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • חלונות: הורד חבילת הכרית המתאימה בהתאם לגרסת הפיתון שלך. הקפד להוריד לפי גרסת ה-python שברשותך.

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

  from PIL import Image  

פעולות עם תמונות:

  • פתח תמונה מסוימת מנתיב: Python
       #img = Image.open(path)    # On successful execution of this statement   # an object of Image type is returned and stored in img variable)   try  :   img   =   Image  .  open  (  path  )   except   IOError  :   pass   # Use the above statement within try block as it can    # raise an IOError if file cannot be found    # or image cannot be opened.   
  • אחזר את גודל התמונה : למופעים של מחלקה Image שנוצרו יש תכונות רבות, אחת מהתכונה השימושית שלה היא גודל. Python
       from   PIL   import   Image   filename   =   'image.webp'   with   Image  .  open  (  filename  )   as   image  :   width     height   =   image  .  size   #Image.size gives a 2-tuple and the width height can be obtained   
    כמה מאפיינים נוספים הם: Image.width Image.height Image.format Image.info וכו'.
  • שמור שינויים בתמונה: כדי לשמור את כל השינויים שביצעת בקובץ התמונה אנחנו צריכים לתת נתיב כמו גם פורמט תמונה. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • סיבוב תמונה: סיבוב התמונה צריך זווית כפרמטר כדי לסובב את התמונה. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Angle given   img   =   img  .  rotate  (  180  )   #Saved in the same relative location   img  .  save  (  'rotated_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    סיבוב תמונה בפיתון הערה: קיים דגל הרחבה אופציונלי זמין כאחד מהארגומנטים של שיטת הסיבוב, אשר אם מוגדרת כ-true מרחיבה את תמונת הפלט כדי להפוך אותה לגדולה מספיק כדי להחזיק את התמונה המסובבת במלואה. כפי שניתן לראות בקטע הקוד שלמעלה, השתמשתי בנתיב יחסי שבו התמונה שלי ממוקמת באותה ספרייה כמו קובץ הקוד של python שלי, ניתן להשתמש גם בנתיב מוחלט.
  • חיתוך תמונה: Image.crop(box) לוקח קואורדינטת פיקסלים של 4-טופל (שמאל למעלה מימין למטה) ומחזיר אזור מלבני מהתמונה בשימוש. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   area   =   (  0     0     width  /  2     height  /  2  )   img   =   img  .  crop  (  area  )   #Saved in the same relative location   img  .  save  (  'cropped_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    חיתוך תמונה בפיתון
  • שינוי גודל תמונה: Image.resize(size)- כאן הגודל מסופק כ-2-tuple רוחב וגובה. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   img   =   img  .  resize  ((  width  /  2     height  /  2  ))   #Saved in the same relative location   img  .  save  (  'resized_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    שינוי גודל תמונה בפיתון
  • הדבקת תמונה על תמונה אחרת: הארגומנט השני יכול להיות 2-tuple (מציין את הפינה השמאלית העליונה) או 4-tuple (שמאל למעלה מימין למטה) - במקרה זה הגודל של התמונה המודבקת חייב להתאים לגודל של אזור התיבה הזה או None שהוא שווה ערך ל- (0 0). Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   #Image on which we want to paste   img   =   Image  .  open  (  'picture.webp'  )   #Relative Path   #Image which we want to paste   img2   =   Image  .  open  (  'picture2.webp'  )   img  .  paste  (  img2     (  50     50  ))   #Saved in the same relative location   img  .  save  (  'pasted_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   ##An additional argument for an optional image mask image is also available.   
    הדבקת תמונה על אחר ב-Python
  • קבלת היסטוגרמה של תמונה: זה יחזיר היסטוגרמה של התמונה שכן רשימת פיקסלים סופרת אחת עבור כל פיקסל בתמונה. (היסטוגרמה של תמונה היא ייצוג גרפי של התפלגות הגוונים בתמונה דיגיטלית. היא מכילה את כל ערכי הבהירות הכלולים בתמונה. היא משרטטת את מספר הפיקסלים עבור כל ערך בהירות. זה עוזר בביצוע הגדרות החשיפה.) מ-PIL import Image Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Getting histogram of image   print   img  .  histogram  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    קבלת-היסטוגרמה-של-תמונה-ב-python-copy


  • העברת תמונה: תכונה זו נותנת לנו את תמונת המראה של תמונה Python
        from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #transposing image    transposed_img   =   img  .  transpose  (  Image  .  FLIP_LEFT_RIGHT  )   #Save transposed image   transposed_img  .  save  (  'transposed.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    העברת תמונה בפיתון
  • פיצול תמונה ללהקות בודדות: פיצול תמונה במצב RGB יוצר שלוש תמונות חדשות שכל אחת מהן מכילה עותק של הרצועות הבודדות המקוריות. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #splitting the image   print   img  .  split  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    לפצל תמונה בפיתון
  • tobitmap: המרת תמונה למפת סיביות X11 (תבנית תמונה בינארית בטקסט רגיל). הוא מחזיר מחרוזת המכילה מפת סיביות X11 ניתן להשתמש בה רק עבור תמונות מצב 1, כלומר תמונות בשחור לבן של פיקסל 1 סיביות. מ-PIL ייבוא ​​תמונה Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   print   img  .  mode   #converting image to bitmap   print   img  .  tobitmap  ()   print   type  (  img  .  tobitmap  ())   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    המרת תמונה למפת סיביות ב-python המרת תמונה ל-bitmao ב-python
  • יצירת תמונה ממוזערת: שיטה זו יוצרת תמונה ממוזערת של התמונה שנפתחת. זה לא מחזיר אובייקט תמונה חדש הוא מבצע שינוי במקום לאובייקט התמונה שנפתח כעת עצמו. אם אינך רוצה לשנות את אובייקט התמונה המקורי, צור עותק ולאחר מכן החל שיטה זו. שיטה זו גם מעריכה את המתאים לשמור על יחס הגובה-רוחב של התמונה בהתאם לגודל שעבר. מ-PIL ייבוא ​​תמונה Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #In-place modification   img  .  thumbnail  ((  200     200  ))   img  .  save  (  'thumb.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    יצירת תמונה ממוזערת של תמונה בפיתון
צור חידון