PIL este Python Imaging Library care oferă interpretului Python capabilități de editare a imaginilor. A fost dezvoltat de Fredrik Lundh și alți alți colaboratori. Pillow este furculița prietenoasă PIL și o bibliotecă ușor de utilizat dezvoltată de Alex Clark și alți colaboratori. Vom lucra cu Pillow.
Instalare:
- Linux: Pe terminalul linux tastați următoarele:
pip install PillowInstalarea pip prin terminal:sudo apt-get update
sudo apt-get install python-pip - Windows: Descărcați pachetul de perne adecvat în funcție de versiunea dvs. python. Asigurați-vă că descărcați în funcție de versiunea python pe care o aveți.
Vom lucra aici cu Modulul Image, care oferă o clasă cu același nume și oferă o mulțime de funcții pentru a lucra cu imaginile noastre. Pentru a importa modulul Image, codul nostru ar trebui să înceapă cu următoarea linie:
from PIL import ImageOperații cu imagini:
- Deschideți o anumită imagine dintr-o cale: 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.
- Preluați dimensiunea imaginii : Instanțele clasei Image care sunt create au multe atribute, unul dintre atributele sale utile este dimensiunea. Python
Alte atribute sunt: Image.width Image.height Image.format Image.info etc.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
- Salvați modificările în imagine: Pentru a salva orice modificări pe care le-ați făcut fișierului imagine, trebuie să dăm calea și formatul imaginii. Python
img.save(path format) # format is optional if no format is specified #it is determined from the filename extension
- Rotirea unei imagini: Rotația imaginii are nevoie de unghi ca parametru pentru ca imaginea să fie rotită. 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()
Notă: Există un indicator de extindere opțional disponibil ca unul dintre argumentele metodei de rotație, care, dacă este setată true, extinde imaginea de ieșire pentru a o face suficient de mare pentru a păstra imaginea rotită complet. După cum se vede în fragmentul de cod de mai sus, am folosit o cale relativă în care imaginea mea se află în același director cu fișierul meu de cod Python, poate fi folosită și o cale absolută.
- Decuparea unei imagini: Image.crop(box) ia o coordonată de pixeli de 4 tuple (stânga sus dreapta jos) și returnează o regiune dreptunghiulară din imaginea utilizată. 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()
- Redimensionarea unei imagini: Image.resize(size) - Aici dimensiunea este furnizată ca lățime și înălțime de 2 tuple. 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()
- Lipirea unei imagini pe o altă imagine: Al doilea argument poate fi un tuplu de 2 (specificând colțul din stânga sus) sau un tuplu de 4 (stânga sus dreapta jos) - în acest caz dimensiunea imaginii lipite trebuie să se potrivească cu dimensiunea acestei regiuni casete sau Niciunul care este echivalent cu (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.
- Obținerea unei histograme a unei imagini: Aceasta va returna o histogramă a imaginii ca o listă de numărători de pixeli câte unul pentru fiecare pixel din imagine. (O histogramă a unei imagini este o reprezentare grafică a distribuției tonale într-o imagine digitală. Conține care sunt toate valorile de luminozitate conținute într-o imagine. Acesta reprezintă numărul de pixeli pentru fiecare valoare de luminozitate. Ajută la efectuarea setărilor de expunere.) din 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()
- Transpunerea unei imagini: Această caracteristică ne oferă imaginea în oglindă a unei imagini 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()
- Împărțiți o imagine în benzi individuale: Împărțirea unei imagini în modul RGB creează trei imagini noi, fiecare conținând o copie a benzilor individuale originale. 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()
- tobitmap: Conversia unei imagini într-un bitmap X11 (un format de imagine binar cu text simplu). Returnează un șir care conține un bitmap X11, care poate fi utilizat numai pentru imagini de modul 1, adică imagini alb-negru de 1 bit pixel. din imaginea de import PIL 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()
- Crearea unei miniaturi: Această metodă creează o miniatură a imaginii care este deschisă. Nu returnează un nou obiect imagine, ci modifică la locul obiectului imagine deschis însuși. Dacă nu doriți să schimbați obiectul imagine original, creați o copie și apoi aplicați această metodă. Această metodă evaluează, de asemenea, oportunitatea de a menține raportul de aspect al imaginii în funcție de dimensiunea trecută. din imaginea de import PIL 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()