Poduszka do podstawowej biblioteki obrazowania w języku Python
Poduszka do nowoczesnego, stale utrzymywanego rozwidlenia biblioteki Python Imaging Library (PIL). Jego zastosowanie polega na zapewnieniu solidnych i wydajnych możliwości przetwarzania oprogramowania bezpośrednio w skryptach Pythona. Możesz otwlubzyć, uszczelnić, filtrować, ulepszać i zapisywać dziesiątki flubmatów obrazów bez konieczności stosowania na zewnętrznych edytorach. Na przykład konwersja 100 obrazów JPEG do formatu PNG i zmiana ich znaczenia do 50% dotyczy mniej niż 2 sekundy ze sterymi operacjami Pillow.
Jeśli chcesz wykonać operacje wsadowe, skutki znaków wodnych, wyodrębnić metadane lub programowo uruchomione miniatury, poduszka jest bezpośrednio odpowiedzią. Ponad 70% zadań automatyzacji przetwarzania obrazu na Pythonie wykorzystuje Pillow jako bibliotekę dostępną według statystyki pobierania PyPI.
Aby włączyć poduszkę, należy wziąć pod uwagę jego podstawowy przebieg: otworzyć → uruchomić → zapisz. Poniżej znajduje się praktyczna implementacja z prawdziwymi przykładami kodu.
Biegnij pip instalator . Sprawdź za pomocą python -c „z obrazu importu PIL; drukuj (obraz.__wersja__)” . Typowa instalacja ograniczona mniej niż 30 sekund na stiardowym łączu szerokopasmowym.
img = Obraz.open("input.jpg").convert("RGB") – niezbędne dla ograniczenia. img.thumbnail((800, 800)) – naprawić, bez zniekształceń. dla pliku w os.listdir("folder"): img.save("output.png", optymalizacja=prawda, jakość=85) – mniejszy rozmiar pliku nawet o 40% bez utraty jakości. Następujące skrypty działają wszystkie pliki JPEG w katalogu, tworząc miniatury o wymiarach 256x256, występujące jednocześnie metadane. Skraca czas przetwarzania o 65% w ramach podsumowania niezoptymalizowanych dodatkowych za pomoc operacji w miejscu.
z obrazu importu PILimportuj osdla nazwy pliku w os.listdir("oryginały"): jeśli nazwapliku.kończy się(.jpg): img = Image.open(os.path.join("oryginały", nazwa pliku)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Poduszka zapewnia ponad 50 dodatkowych funkcji w 8 głównych kategoriach. Poniżej znajdują się tabele przedstawiające podstawowe funkcje, typowe przypadki i rzeczywiste efekty.
| Kategoria funkcja | Metody kluczowe | Typowe zastosowanie | Śr. Czas (ms) |
|---|---|---|---|
| Format Konwersji | .zapisz(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Transformacje geometryczne | .resize(), .rotate(), .crop() | Miniatury, wyrównanie | 8–45 |
| Operacje kolorystyczne | .convert(), .point() | Skala szarości, światło | 3–10 |
| Filtrowanie i ulepszanie | Filtr obrazu, zastosowanie obrazu | Rozmycie, wyostrzenie, kontrast | 15–60 |
| Rysunek i tekst | ImageDraw.Draw() | Znaki wodne, adnotacje | 20–80 |
Poduszka zmniejsza długość kodu przetwarzania średnio o 73% w rozszerzeniu natywnych alternatywnych Pythona (np. ręczna iteracja pikseli). Na przykład zastosowanie rozmycia gaussowskiego w natywnym Pythonie wymaga ~15 linii zagnieżdżonych; z poduszką, na prawdę img.filter(ImageFilter.GaussianBlur(promień=2)) – jedna linia.
Na podstawie wniosków dla społecznościowych i problemów z GitHubem przedstawiono 6 najczęściej zadawanych pytań na temat Pillow wraz z bezpośrednimi, praktycznymi odpowiedziami.
Tak. używać Obraz.open("animowany.gif") i iteruj po ramkach za pomocą szukać() . Pillow może czytać i zapisywać animowane pliki GIF, dane taktowania z odstępem do 1 ms. Przykład: wyodrębnione wszystkie klatki, aby podzielić obrazy w czasie przekraczającym 0,5 sekundy, aby uzyskać 20-klatkowy plik GIF.
używać Obraz.open().convert() i przetwarzać w kawałkach .crop() . W przypadku zastosowania graficznego o rozdzielczości 100 MP leniwe ładowanie Poduszka użytkowa tylko 5-10 MB zamiast zachować ostrożność inne określenie Fot.LANCZOS dla wysokiej jakości próbkowania w dół, co oszczędza pamięć.
Poduszka natywnie obsługuje ponad 30 formatów, w tym JPEG, PNG, TIFF, BMP, GIF, WebP i ICO. Obsługa WebP w Pillow pozwala uzyskać 25–35% czystej kompresji niż JPEG przy tej samej jakości (na podstawie badań Google WebP). Aby sprawdzić wszystkie przechowywane formaty: z funkcją importu PIL; funkcje.get_supported() .
W uzasadnieniu operacji we/wy i prostą transformację (zmiana podstawowa, przycinanie, konwersja formatu) Poduszka jest 15-30% inna niż OpenCV na tym samym sprzęcie wykorzystanie kosztów ogólnych. W przypadku wystąpienia wizji komputerowej (wykrywanie cechy, dopasowywanie) OpenCV jest lepszy. Zawsze wybieraj poduszkę do automatyzacji wsadowego przetwarzania obrazu.
używać Obraz.alpha_composite() or .wklej() z przezroczystą nakładką. Partię 1000 obrazów (każde 2 MB) można opatrzyć znakiem wodnym w ciągu ~45 sekund przy użyciu wejścia do i metody losowania Pillow. Aby znaleźć się ze strukturą, zobacz przykładowy kod w sekcjach „Jak zastosować”.
Tak. Konwertuj tablice Pillow i NumPy: np.tablica(img) i Obraz.z tablicy(arr) . Ta integracja jest używana w 85% potoków analizy danych (Ankiety Kaggle, 2024). Płynne połączenie komunikacyjne we/wy Pillow z operacjami matematycznymi NumPy.
Aby zmaksymalizować skuteczność Pillow, postępowanie zgodnie z zasadami wytycznymi opartymi na dowodach:
musiał, Poduszka to najlepsze rozwiązanie do przetwarzania w języku Python do zadań, które nie wymagają użycia wideo w czasie ani transformacji 3D. Połączenie robocze (~0,2 s na obraz 12 MP dla kodu operacyjnego), obsługa formatów (30 obsługiwanych) i czystego interfejsu API sprawia, że jest to standardowy interfejs branżowy w zakresach skryptów automatyzacji, backendów internetowych i potoków kodów danych.