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 PillowPip 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()