Rad sa slikama u Pythonu

Rad sa slikama u Pythonu

PIL je Python slikovna knjižnica koja Python tumaču pruža mogućnosti uređivanja slika. Razvio ga je Fredrik Lundh i nekoliko drugih suradnika. Pillow je prijateljska PIL vilica i biblioteka jednostavna za korištenje koju su razvili Alex Clark i drugi suradnici. Radit ćemo s Pillowom.

Montaža:

  • Linux: Na linux terminalu upišite sljedeće:
     pip install Pillow  Instaliranje pip-a preko terminala:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • Windows: preuzimanje odgovarajući Pillow paket prema vašoj verziji pythona. Obavezno preuzmite u skladu s python verzijom koju imate.

Ovdje ćemo raditi s modulom slike koji pruža istoimenu klasu i puno funkcija za rad na našim slikama. Za uvoz modula slike naš kod treba započeti sljedećim retkom:

  from PIL import Image  

Radnje sa slikama:

  • Otvorite određenu sliku sa staze: 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.   
  • Dohvati veličinu slike : Instance klase Image koje su stvorene imaju mnogo atributa, jedan od korisnih atributa je veličina. 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   
    Neki drugi atributi su: Image.width Image.height Image.format Image.info itd.
  • Spremi promjene na slici: Kako bismo spremili sve promjene koje ste napravili u slikovnoj datoteci, moramo dati putanju kao i format slike. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • Rotiranje slike: Za rotaciju slike potreban je kut kao parametar da bi se slika rotirala. 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  ()   
    rotiranje slike u pythonu Napomena: Postoji izborna zastavica za proširenje dostupna kao jedan od argumenata metode rotacije koja ako je postavljena na true proširuje izlaznu sliku kako bi bila dovoljno velika da primi cijelu rotiranu sliku. Kao što se vidi u gornjem isječku koda, upotrijebio sam relativnu stazu gdje se moja slika nalazi u istom direktoriju kao i moja datoteka python koda, a može se koristiti i apsolutna staza.
  • Obrezivanje slike: Image.crop(box) uzima 4-torku (lijevo gore desno dolje) koordinate piksela i vraća pravokutno područje iz korištene slike. 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  ()   
    izrezivanje slike u pythonu
  • Promjena veličine slike: Image.resize(size)- Ovdje je veličina navedena kao 2-torka širine i visine. 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  ()   
    promjena veličine slike u pythonu
  • Lijepljenje slike na drugu sliku: Drugi argument može biti 2-torka (određuje gornji lijevi kut) ili 4-torka (lijevo gore desno dolje) - u ovom slučaju veličina zalijepljene slike mora odgovarati veličini ove regije okvira ili Ništa što je ekvivalentno (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.   
    lijepljenje slike na drugu u Pythonu
  • Dobivanje histograma slike: Ovo će vratiti histogram slike jer popis piksela broji jedan za svaki piksel na slici. (Histogram slike je grafički prikaz raspodjele tonova u digitalnoj slici. Sadrži sve vrijednosti svjetline sadržane u slici. Iscrtava broj piksela za svaku vrijednost svjetline. Pomaže u postavkama ekspozicije.) iz PIL import slike 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  ()   
    dobivanje-histograma-slike-u-python-kopiji


  • Transponiranje slike: Ova nam značajka daje zrcalnu sliku slike 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  ()   
    transponiranje slike u python
  • Podijelite sliku u pojedinačne trake: Razdvajanje slike u RGB modu stvara tri nove slike od kojih svaka sadrži kopiju izvornih pojedinačnih traka. 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  ()   
    podijeli sliku u pythonu
  • tobitmapa: Pretvaranje slike u X11 bitmapu (format binarne slike običnog teksta). Vraća niz koji sadrži X11 bitmapu i može se koristiti samo za slike načina 1, tj. crno-bijele slike od 1 bita piksela. iz PIL import slike 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  ()   
    pretvaranje slike u bitmapu u pythonu pretvaranje slike u bitmao u pythonu
  • Stvaranje minijature: Ova metoda stvara sličicu otvorene slike. Ne vraća novi slikovni objekt, već vrši izmjene na mjestu samog trenutno otvorenog slikovnog objekta. Ako ne želite promijeniti izvorni slikovni objekt, napravite kopiju i zatim primijenite ovu metodu. Ova metoda također procjenjuje prikladnost za održavanje omjera slike prema prenesenoj veličini. iz PIL import slike 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  ()   
    stvaranje minijature slike u pythonu
Napravi kviz