Práca s obrázkami v Pythone

Práca s obrázkami v Pythone

PIL je Python Imaging Library, ktorá poskytuje pythonovému interpretu možnosti úpravy obrázkov. Vyvinul ho Fredrik Lundh a niekoľko ďalších prispievateľov. Vankúš je priateľská vidlica PIL a ľahko použiteľná knižnica vyvinutá Alexom Clarkom a ďalšími prispievateľmi. Budeme pracovať s vankúšom.

Inštalácia:

  • Linux: Na linuxovom termináli zadajte nasledovné:
     pip install Pillow  Inštalácia pipu cez terminál:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • Windows: Stiahnuť príslušný vankúšový balíček podľa vašej verzie pythonu. Uistite sa, že sťahujete podľa verzie pythonu, ktorú máte.

Tu budeme pracovať s modulom Image Module, ktorý poskytuje triedu s rovnakým názvom a poskytuje množstvo funkcií na prácu s našimi obrázkami. Ak chcete importovať modul Image, náš kód by mal začínať nasledujúcim riadkom:

  from PIL import Image  

Operácie s obrázkami:

  • Otvorte konkrétny obrázok z cesty: 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.   
  • Načítať veľkosť obrázka : Inštancie triedy Image, ktoré sú vytvorené, majú veľa atribútov, jedným z ich užitočných atribútov je veľkosť. 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   
    Niektoré ďalšie atribúty sú: Image.width Image.height Image.format Image.info atď.
  • Uložiť zmeny v obrázku: Ak chcete uložiť zmeny, ktoré ste vykonali v súbore obrázka, musíme zadať cestu a formát obrázka. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • Otočenie obrázka: Otočenie obrazu potrebuje uhol ako parameter, aby sa obraz otočil. 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  ()   
    otáčanie obrázka v pythone Poznámka: Ako jeden z argumentov metódy otáčania je k dispozícii voliteľný príznak rozšírenia, ktorý, ak je nastavený na hodnotu true, rozšíri výstupný obrázok tak, aby bol dostatočne veľký na to, aby sa do neho zmestil celý otočený obrázok. Ako je vidieť vo vyššie uvedenom úryvku kódu, použil som relatívnu cestu, kde sa môj obrázok nachádza v rovnakom adresári ako môj súbor s kódom python, možno použiť aj absolútnu cestu.
  • Orezanie obrázka: Image.crop(box) prevezme súradnicu 4 pixelov (vľavo hore vpravo dole) a vráti obdĺžnikovú oblasť z použitého obrázka. 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  ()   
    orezanie obrázka v pythone
  • Zmena veľkosti obrázka: Image.resize (veľkosť) – Veľkosť je tu uvedená ako 2-násobok šírky a výšky. 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  ()   
    zmena veľkosti obrázka v pythone
  • Prilepenie obrázka na iný obrázok: Druhým argumentom môže byť 2 n-tica (špecifikuje ľavý horný roh) alebo 4 n-tice (ľavý horný pravý dolný) – v tomto prípade sa veľkosť prilepeného obrázka musí zhodovať s veľkosťou tohto rámčeka alebo Žiadne, čo je ekvivalentné (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.   
    prilepenie obrázka na iné v Pythone
  • Získanie histogramu obrázka: Tým sa vráti histogram obrázka ako zoznam počtu pixelov jeden pre každý pixel na obrázku. (Histogram obrázka je grafické znázornenie tonálneho rozloženia v digitálnom obrázku. Obsahuje všetky hodnoty jasu obsiahnuté v obrázku. Vykresľuje počet pixelov pre každú hodnotu jasu. Pomáha pri nastavovaní expozície.) z 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  ()   
    získanie-histogramu-obrazu-v-kópii-pythonu


  • Transponovanie obrázka: Táto funkcia nám dáva zrkadlový obraz obrazu 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  ()   
    transponovanie obrázka v pythone
  • Rozdeľte obrázok na jednotlivé pásy: Rozdelenie obrázka v režime RGB vytvorí tri nové obrázky, z ktorých každý bude obsahovať kópiu pôvodných jednotlivých pásov. 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  ()   
    rozdeliť obrázok v pythone
  • tobitmapa: Konverzia obrázka na bitmapu X11 (formát binárneho obrázka s obyčajným textom). Vracia reťazec obsahujúci bitmapu X11, ktorú možno použiť iba pre obrázky v režime 1, t. j. čiernobiele obrázky s 1 bitovým pixelom. z importu PIL Obrázok 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  ()   
    prevod obrázka na bitmapu v pythone prevod obrazu na bitmao v pythone
  • Vytvorenie miniatúry: Táto metóda vytvorí miniatúru obrázka, ktorý sa otvorí. Nevracia nový objekt obrázka, ktorý vykonáva na mieste úpravy aktuálne otvoreného objektu obrázka samotného. Ak nechcete zmeniť pôvodný objekt obrázka, vytvorte kópiu a potom použite túto metódu. Táto metóda tiež vyhodnocuje vhodnosť zachovania pomeru strán obrázka podľa odovzdanej veľkosti. z importu PIL Obrázok 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  ()   
    vytvorenie miniatúry obrázka v pythone
Vytvoriť kvíz