Praca z obrazami w Pythonie

Praca z obrazami w Pythonie

PIL to biblioteka obrazowania Pythona, która zapewnia interpreterowi Pythona możliwości edycji obrazów. Został opracowany przez Fredrika Lundha i kilku innych współpracowników. Pillow to przyjazny fork PIL i łatwa w użyciu biblioteka opracowana przez Alexa Clarka i innych współpracowników. Będziemy pracować z Pillow.

Instalacja:

  • Linux: Na terminalu Linux wpisz następujące polecenie:
     pip install Pillow  Instalowanie pip przez terminal:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • Okna: Pobierać odpowiedni pakiet Pillow zgodnie z wersją Pythona. Upewnij się, że pobierasz zgodnie z posiadaną wersją Pythona.

Będziemy tutaj pracować z modułem obrazu, który udostępnia klasę o tej samej nazwie i zapewnia wiele funkcji do pracy na naszych obrazach. Aby zaimportować moduł obrazu, nasz kod powinien zaczynać się od następującej linii:

  from PIL import Image  

Operacje na obrazach:

  • Otwórz konkretny obraz ze ścieżki: 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.   
  • Pobierz rozmiar obrazu : Utworzone instancje klasy Image mają wiele atrybutów, jednym z jej przydatnych atrybutów jest rozmiar. 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   
    Niektóre inne atrybuty to: Image.width Image.height Image.format Image.info itp.
  • Zapisz zmiany w obrazie: Aby zapisać zmiany dokonane w pliku obrazu, musimy podać ścieżkę i format obrazu. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • Obracanie obrazu: Obrót obrazu wymaga parametru kąta, aby obraz został obrócony. 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  ()   
    obracanie obrazu w Pythonie Uwaga: Jako jeden z argumentów metody obracania dostępna jest opcjonalna flaga rozwijania, która, jeśli jest ustawiona na wartość true, rozszerza obraz wyjściowy tak, aby był wystarczająco duży, aby pomieścić cały obrócony obraz. Jak widać w powyższym fragmencie kodu, użyłem ścieżki względnej, w której mój obraz znajduje się w tym samym katalogu, co mój plik kodu Pythona, można również użyć ścieżki bezwzględnej.
  • Przycinanie obrazu: Image.crop(box) pobiera współrzędne 4-krotkowe (lewy górny, prawy dolny dolny) pikseli i zwraca prostokątny obszar z użytego obrazu. 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  ()   
    przycinanie obrazu w Pythonie
  • Zmiana rozmiaru obrazu: Image.resize(size) — tutaj rozmiar jest podawany jako 2-krotna szerokość i wysokość. 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  ()   
    zmiana rozmiaru obrazu w Pythonie
  • Wklejanie obrazu do innego obrazu: Drugi argument może być krotką 2-krotną (określającą lewy górny róg) lub krotką 4-krotną (lewy górny, prawy dolny) - w tym przypadku rozmiar wklejanego obrazu musi odpowiadać rozmiarowi tego obszaru ramki lub Brakowi, co jest równoważne (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.   
    wklejanie obrazu na innym w Pythonie
  • Uzyskiwanie histogramu obrazu: Spowoduje to zwrócenie histogramu obrazu w postaci listy pikseli zliczanych po jednym dla każdego piksela na obrazie. (Histogram obrazu to graficzna reprezentacja rozkładu tonalnego na obrazie cyfrowym. Zawiera wszystkie wartości jasności zawarte w obrazie. Przedstawia liczbę pikseli dla każdej wartości jasności. Pomaga w ustawianiu ekspozycji.) 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  ()   
    pobieranie histogramu-obrazu-w-kopii-pythona


  • Transpozycja obrazu: Ta funkcja daje nam lustrzane odbicie 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  ()   
    transpozycja obrazu w Pythonie
  • Podziel obraz na poszczególne pasma: Podział obrazu w trybie RGB powoduje utworzenie trzech nowych obrazów, z których każdy zawiera kopię oryginalnych pojedynczych pasm. 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  ()   
    podziel obraz w Pythonie
  • mapa bitowa: Konwersja obrazu na mapę bitową X11 (format obrazu binarnego zwykłego tekstu). Zwraca ciąg znaków zawierający bitmapę X11. Można go używać tylko w przypadku obrazów w trybie 1, tj. obrazów czarno-białych o rozdzielczości 1-bitowego piksela. z obrazu importu 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  ()   
    konwersja obrazu na bitmapę w Pythonie konwersja obrazu do bitmao w Pythonie
  • Tworzenie miniatury: Ta metoda tworzy miniaturę otwartego obrazu. Nie zwraca nowego obiektu obrazu, wprowadza modyfikacje na miejscu w samym aktualnie otwartym obiekcie obrazu. Jeśli nie chcesz zmieniać oryginalnego obiektu obrazu, utwórz kopię, a następnie zastosuj tę metodę. Metoda ta ocenia również, czy należy zachować proporcje obrazu w zależności od przekazanego rozmiaru. z obrazu importu 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  ()   
    tworzenie miniatury obrazu w Pythonie
Utwórz quiz