logo

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' src='//techcodeview.com/img/python/71/working-with-images-in-python.webp' title=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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-1.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-2.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-3.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-4.webp' title=


  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-5.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-6.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-7.webp' title= převod obrázku na bitmao v pythonu' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-8.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-9.webp' title=
Vytvořit kvíz