Képekkel való munka Pythonban
A PIL a Python Imaging Library, amely képszerkesztési lehetőségeket biztosít a python interpreter számára. Fredrik Lundh és számos más közreműködő fejlesztette ki. A Pillow egy barátságos PIL villa és egy könnyen használható könyvtár, amelyet Alex Clark és más közreműködők fejlesztettek ki. Párnával fogunk dolgozni.
Telepítés:
- Linux: Linux terminálon írja be a következőket:
pip install Pillow Pip telepítése terminálon keresztül:
sudo apt-get update
sudo apt-get install python-pip - Windows: Letöltés a python verziójának megfelelő párnacsomagot. Ügyeljen arra, hogy a python verziójának megfelelően töltse le.
Itt az Image Module-lal fogunk dolgozni, amely egy azonos nevű osztályt biztosít, és számos funkciót biztosít a képeken való munkához. Az Image modul importálásához a kódunknak a következő sorral kell kezdődnie:
from PIL import ImageMűveletek képekkel:
- Nyisson meg egy adott képet egy útvonalból: 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.
- Kép méretének lekérése : Az Image osztály létrejött példányai számos attribútummal rendelkeznek, az egyik hasznos attribútuma a méret. Python
Néhány további attribútum: Image.width Image.height Image.format Image.info stb.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
- Módosítások mentése a képen: A képfájlon végzett változtatások mentéséhez meg kell adnunk az elérési utat és a képformátumot. Python
img . save ( path format ) # format is optional if no format is specified #it is determined from the filename extension
- Kép elforgatása: A kép elforgatásához a szög paraméternek kell lennie. 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 ()
Megjegyzés: A forgatás metódus egyik argumentumaként elérhető egy opcionális kiterjesztési jelző, amely ha igaz, akkor kibontja a kimeneti képet, hogy az elég nagy legyen a teljes elforgatott kép megtartásához. Amint a fenti kódrészletben látható, relatív elérési utat használtam, ahol a képem ugyanabban a könyvtárban található, mint a python kódfájlom, és abszolút elérési út is használható. - Kép kivágása: Az Image.crop(box) egy 4 sorból álló (bal felső jobb alsó) pixelkoordinátát vesz fel, és egy téglalap alakú területet ad vissza a használt képből. 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 ()
- Kép átméretezése: Image.resize(size) – Itt a méret kétsoros szélességben és magasságban van megadva. 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 ()
- Kép beillesztése másik képre: A második argumentum lehet egy 2 sor (a bal felső sarok megadása) vagy egy 4 sor (bal felső jobb alsó) - ebben az esetben a beillesztett kép méretének meg kell egyeznie a mezőterület méretével, vagy a None (0 0) értékkel egyenértékű. 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.
- Kép hisztogramjának lekérése: Ez visszaadja a kép hisztogramját, mivel a képpontok listája a kép minden egyes pixeléhez egyet számol. (A kép hisztogramja a digitális kép tónuseloszlásának grafikus ábrázolása. A képen található összes fényerő értékét tartalmazza. Minden fényerőértékhez kirajzolja a pixelek számát. Segít az expozíciós beállítások elvégzésében.) innen: 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 ()
- Kép transzponálása: Ez a funkció egy kép tükörképét adja nekünk 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 ()
- Kép felosztása különálló sávokra: Egy kép RGB módban történő felosztása három új képet hoz létre, amelyek mindegyike az eredeti egyedi sávok másolatát tartalmazza. 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 ()
- bittérkép: Kép konvertálása X11 bittérképpé (egy egyszerű szöveges bináris képformátum). Egy X11 bittérképet tartalmazó sztringet ad vissza, amely csak 1-es módú képekhez, azaz 1 bites pixeles fekete-fehér képekhez használható. a PIL import képből 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 ()
- Miniatűr létrehozása: Ez a módszer létrehozza a megnyitott kép miniatűrjét. Nem ad vissza új képobjektumot, hanem a helyben módosítja magát az éppen megnyitott képobjektumot. Ha nem szeretné megváltoztatni az eredeti képobjektumot, hozzon létre egy másolatot, majd alkalmazza ezt a módszert. Ez a módszer azt is kiértékeli, hogy az átadott méretnek megfelelően a kép oldalaránya megfelelő-e. a PIL import képből 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 ()