niedziela, 26 marca 2017

Wczytywanie zdjęć w Tkinter.

Założeniem, jakie przyjąłem przed rozpoczęciem tego projektu, było użycie jak najmniejszej ilości zewnętrznych pakietów (bibliotek) Pythona. Wiedziałem, że wykorzystanie biblioteki Pillow będzie w tym projekcie koniecznością. Tkinter ma jedną bardzo istotną wadę, pozwala jedynie na bezpośrednie wczytywanie obrazów w formatach GIF, PGM oraz PPM. Ciężko wymagać od użytkownika, aby za każdym razem konwertował zdjęcia do mało popularnych formatów, wyłącznie w celu pracy z jednym programem.

Dlatego z pomocą przychodzi Pillow. Biblioteka ta pozwala na wczytywanie ponad 30 różnych formatów graficznych plików. Posiada również wbudowaną klasę, pozwalającą na konwertowanie tych formatów, do postaci rozpoznawalnej przez Tkinter. Wystarczy do tego tylko jedna linia kodu.

loaded_image = ImageTk.PhotoImage(Image.open('full_path_to_the_image'))

Oprócz tej niezbędnej do tego projektu funkcji Pillow jest bardzo rozbudowaną biblioteką graficzną, posiadającą szereg bardzo różnych funkcji. Jest też bardzo popularny, jeśli więc dostarczona przez twórców dokumentacja okaże się niewystarczająca, z dużym prawdopodobieństwem rozwiązanie problemu odnajdzie się na "stacku".

Oczywiście istnieje szereg innych bibliotek graficznych, posiadających podobne funkcje oraz dużo więcej. Aczkolwiek moja decyzja padła na Pillow z tego względu, że już z tą biblioteką pracowałem, co bardzo ułatwia mi zadanie oraz wydaje mi się, że posiada ona wszystko to czego potrzebuję. Oczywiście jeśli chciałbym wprowadzić funkcjonalność typu: przechwytywanie obrazu z kamery mikroskopu. To biblioteka ta, będzie niewystarczająca. Planując taką funkcjonalność lepiej użyć np. openCV.

Wybierając bibliotekę graficzną, kierowałem się również łatwością jej instalacji, gdyż zdawałem sobie sprawę, że jeśli nie będę rozprowadzał programu w formie pakietu, to na użytkowniku będzie spoczywał wymóg zainstalowania odpowiednich bibliotek. Pillow można zainstalować przez pip, manager pakietów Pythona. Pobierze on automatycznie i zainstaluje odpowiednią wersję biblioteki, dla danej wersji Pythona, co jest bardzo wygodnym i odpornym na błędy rozwiązaniem.

Brak komentarzy:

Prześlij komentarz