Práce s obrázky v Pythonu

Práce s obrázky v Pythonu

PIL je Python Imaging Library, která poskytuje pythonovému interpretu možnosti úpravy obrázků. Byl vyvinut Fredrikem Lundhem a několika dalšími přispěvateli. Pillow je přátelská vidlička PIL a snadno použitelná knihovna vyvinutá Alexem Clarkem a dalšími přispěvateli. Budeme pracovat s Polštářem.

Instalace:

  • Linux: Na linuxovém terminálu zadejte následující:
     pip install Pillow  Instalace pipu přes terminál:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • Windows: Stáhnout příslušný balíček Pillow podle vaší verze pythonu. Ujistěte se, že stahujete podle verze pythonu, kterou máte.

Zde budeme pracovat s Image Module, který poskytuje stejnojmennou třídu a poskytuje mnoho funkcí pro práci s našimi obrázky. Chcete-li importovat modul Image, náš kód by měl začínat následujícím řádkem:

  from PIL import Image  

Operace s obrázky:

  • Otevřete konkrétní obrázek 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číst velikost obrázku : Vytvořené instance třídy Image mají mnoho atributů, jedním z jejich užitečných atributů je velikost. 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   
    Některé další atributy jsou: Image.width Image.height Image.format Image.info atd.
  • Uložit změny v obrázku: Chcete-li uložit jakékoli změny, které jste provedli v souboru obrázku, musíme zadat cestu a formát obrázku. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • Otočení obrázku: Otočení obrazu potřebuje úhel jako parametr, aby se 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  ()   
    otočení obrázku v pythonu Poznámka: Jako jeden z argumentů metody otočení je k dispozici volitelný příznak rozbalení, který, pokud je nastaven na hodnotu true, rozšíří výstupní obraz tak, aby byl dostatečně velký, aby pojal celý otočený obraz. Jak je vidět ve výše uvedeném úryvku kódu, použil jsem relativní cestu, kde je můj obrázek umístěn ve stejném adresáři jako můj soubor kódu python, lze také použít absolutní cestu.
  • Oříznutí obrázku: Image.crop(box) převezme 4 n-tice (vlevo nahoře vpravo dole) pixelové souřadnice a vrátí obdélníkovou oblast z použitého obrázku. 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  ()   
    oříznutí obrázku v pythonu
  • Změna velikosti obrázku: Image.resize(velikost)- Zde je velikost uvedena jako 2-násobek šířky 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  ()   
    změna velikosti obrázku v pythonu
  • Vložení obrázku na jiný obrázek: Druhým argumentem může být 2 n-tice (určující levý horní roh) nebo 4 n-tice (vlevo nahoře vpravo dole) – v tomto případě musí velikost vloženého obrázku odpovídat velikosti tohoto pole nebo None, což 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.   
    vložení obrázku na jiný v Pythonu
  • Získání histogramu obrázku: Tím se vrátí histogram obrázku jako seznam počtu pixelů jeden pro každý pixel v obrázku. (Histogram obrázku je grafické znázornění tonálního rozložení v digitálním obrázku. Obsahuje všechny hodnoty jasu obsažené v obrázku. Vykresluje počet pixelů pro každou hodnotu jasu. Pomáhá při nastavení expozice.) 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ískání-histogramu-obrázku-v-kopii-pythonu


  • Transponování obrázku: Tato funkce nám poskytuje zrcadlový 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  ()   
    transponování obrázku v pythonu
  • Rozdělte obrázek do jednotlivých pásem: Rozdělením obrazu v režimu RGB se vytvoří tři nové obrazy, z nichž každý obsahuje kopii původních jednotlivých pásů. 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  ()   
    rozdělit obrázek v pythonu
  • tobitmapa: Převod obrázku na bitmapu X11 (formát binárního obrázku s prostým textem). Vrací řetězec obsahující bitmapu X11, lze jej použít pouze pro obrázky v režimu 1, tj. černobílé obrázky s 1 bitovým pixelem. z importu PIL Obrázek 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  ()   
    převod obrázku na bitmapu v pythonu převod obrázku na bitmao v pythonu
  • Vytvoření miniatury: Tato metoda vytvoří miniaturu obrázku, který je otevřen. Nevrací nový objekt obrázku, ale provádí úpravy na místě aktuálně otevřeného objektu obrázku samotného. Pokud nechcete měnit původní objekt obrázku, vytvořte kopii a poté použijte tuto metodu. Tato metoda také vyhodnocuje vhodné zachovat poměr stran obrazu podle předané velikosti. z importu PIL Obrázek 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  ()   
    vytvoření miniatury obrázku v pythonu
Vytvořit kvíz