logo

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' src='//techcodeview.com/img/python/71/working-with-images-in-python.webp' title=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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-1.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-2.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-3.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-4.webp' title=


  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-5.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-6.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-7.webp' title= konwersja obrazu do bitmao w Pythonie' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-8.webp' title=
  • 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' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-9.webp' title=
Utwórz quiz