Poduszka Pythona - praca z obrazami

W tym rozdziale omówiono tematy, w tym sposób czytania i zapisywania obrazu w aplikacji Pillow.

Czytanie obrazu

Czytanie i pisanie obrazów za pomocą biblioteki poduszek jest bardzo proste, z pomocą PIL.Image module function.

Składnia

Image.open(fp, mode=’r’)

Gdzie

  • fp- Nazwa pliku (ciąg znaków), obiekt pathlib.Path lub obiekt pliku. Obiekt pliku musi implementować metody read (), seek () i tell () i być otwarty w trybie binarnym.

  • mode - Jest to opcjonalny argument, jeśli jest podany, musi mieć wartość „r”.

  • Return value - Obiekt obrazu.

  • Error - Jeśli nie można znaleźć pliku lub nie można otworzyć i zidentyfikować obrazu.

Przykład

Poniżej znajduje się bardzo prosty przykład, w którym zamierzamy otworzyć obraz w dowolnym formacie (używamy.jpg), wyświetl go w oknie, a następnie zapisz (domyślna lokalizacja) w innym formacie pliku (.png).

from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()

W powyższym przykładzie importujemy moduł Image z biblioteki PIL, a następnie wywołujemy plik Image.open()funkcja do odczytu obrazu z dysku, która zwraca typ danych obiektu obrazu. Automatycznie określi typ pliku, patrząc na zawartość pliku. Do czytaniaopen() funkcja akceptuje plik filename(string), a path object lub image(file) obiekt.

Tak więc, używając funkcji open (), faktycznie czytamy obraz. Image.open () odczyta obraz i pobierze z niego wszystkie istotne informacje.

Wynik

Jeśli zapiszesz powyższy program jako Example.py i uruchomisz, wyświetli oryginalne (.jpg) i ponownie zapisane (.bmp) obrazy przy użyciu standardowego narzędzia do wyświetlania PNG, w następujący sposób -

Actual image

Resaved image (.bmp)

Zapisywanie obrazu

Funkcja save () zapisuje obraz do pliku. Podobnie jak w przypadku czytania (funkcja open ()), funkcja save () przyjmuje nazwę pliku, obiekt ścieżki lub obiekt plik, który został otwarty do zapisu.

Składnia

Image.save(fp, format=None, **params)

Gdzie,

  • fp - Nazwa pliku (ciąg znaków), obiekt pathlib.Path lub obiekt pliku.

  • format- Opcjonalne zastąpienie formatu. W przypadku pominięcia używany format jest określany na podstawie rozszerzenia nazwy pliku. Jeśli zamiast nazwy pliku użyto obiektu pliku, ten parametr powinien być zawsze używany.

  • options - Dodatkowe parametry dla programu zapisującego obraz.

  • Return value - Żaden

  • KeyError - Jeśli nie można określić formatu wyjściowego na podstawie nazwy pliku, użyj opcji formatu, aby rozwiązać ten problem.

  • IOError - Jeśli nie można zapisać pliku, mógł on zostać utworzony i może zawierać częściowe dane.

Krótko mówiąc, powyższa składnia zapisze obraz pod podaną nazwą pliku. Jeśli nie określono formatu, jest on oparty na bieżącym rozszerzeniu nazwy pliku. Aby przekazać dodatkowe instrukcje autorowi, używamy opcji słów kluczowych.

image.save('beach1.bmp')

W powyższym przykładzie zapisuje plik na podstawie rozszerzenia pliku, aby określić typ obrazu, na przykład - powyższe utworzy plik bmp w naszym bieżącym katalogu roboczym.

Możesz również jawnie określić typ pliku jako drugi parametr -

image.save('beach1.gif', 'GIF')