Polštář je základní knihovna Python Imaging Library
Pillow je moderní, aktivně udržovaná větev Python Imaging Library (PIL). Jeho primární funkce je poskytovat robustní a efektivní možnosti zpracování obrazu přímo ve skriptech Pythonu. Můžete otevřít, manipulovat, filtrovat, vylepšovat a ukládat desítky obrazových fnebomátů, aniž byste museli shromáždit na externí editneboy. např. převod 100 obrázků JPEG na PNG a jejich změna velikosti na 50 % trvá méně než 2 sekundy s optimalizovaným provozem polštáře.
Pokud potřebujete použít dávkové operace, přidávat vodoznaky, extrahovat metadata nebo vytvářet miniatury programově, Pillow je přímou odpovědí. Více než 70 % úloh automatizace zpracování obrazu založených na Pythonu používá Pillow jako svou základní knihovnu , podle statistiky stahování PyPI.
Abyste Pillow využívat efektivně, musíte pochopit jeho základní pracovní postup: otevřít → zpracovat → uložit. Níže je praktická implementace s reálnými příklady kódu.
Spustit pip install Pillow . Ověřte si pomocí python -c "z PIL import obrázku; print(Image.__version__)" . Typická instalace trvá méně než 30 sekund na staardní širokopásmové připojení.
img = Image.open("vstup.jpg").convert("RGB") – nezbytné pro směr. img.thumbnail((800, 800)) – zachovává poměr, žádné zkreslení. pro soubor v os.listdir("složka"): img.save("output.png", optimalizovat=Pravda, kvalita=85) – snížit velikost souboru až o 40 % bez viditelné ztráty kvality. Následující skript zpracovává všechny soubory JPEG v adresáři a vytváří miniatury o velikosti 256 x 256 pixelů při zachování metadat. Zkracuje celkovou dobu zpracování o 65 % ve srovnání se sekvenčními neoptimalizovanými smyčkami pomocí operací na místě.
z importu PIL Obrázekimport ospro název souboru v os.listdir("originals"): if filename.endswith(".jpg"): img = Image.open(os.path.join("originály", název souboru)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Polštář nabízí více než 50 vestavěných funkcí v 8 hlavních kategoriích. Níže je strukturovaná výkon zobrazující jeho primární funkce, typické případy použití a metriky v reálném světě.
| Kategorie funkce | Klíčové metody | Typické použití | Prům. čas (ms) |
|---|---|---|---|
| Převod formátu | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Geometrické transformace | .resize(), .rotate(), .crop() | Miniatura, zarovnání | 8–45 |
| Barevné operace | .convert(), .point() | Stupně šedi, jas | 3–10 |
| Filtrování a aktualizace | ImageFilter, ImageEnhance | Rozostření, doostření, kontrast | 15–60 |
| Kresba text | ImageDraw.Draw() | Vodoznaky, anotace | 20–80 |
Pillow snižuje délku kódu pro zpracování obrazu v průměru o 73 % ve srovnání s nativními řešeními Pythonu (např. ruční iterace pixelů). Například použití Gaussova rozostření s nativním Pythonem vyžaduje ~15 řádků vnořených smyček; s polštářem, to je img.filter(ImageFilter.GaussianBlur(radius=2)) – jeden řádek.
Na základě komunitních fór a problémů GitHubu je toto 6 nejčastějších dotazů o Pillow s přímými a použitelnými odpověďmi.
Ano. Použijte Image.open("animated.gif") a iterujte snímky pomocí hledat () . Polštář dokáže číst a zapisovat animované GIFy, přičemž zachovává časová data s přesností až 1 ms. Příklad: extrahujte všechny snímky a oddělte snímky za méně než 0,5 sekundy pro GIF s 20 snímky.
Použijte Image.open().convert() a zpracovávat po kouscích s .crop() . Pro 100MP obrázek využívá Pillowovo líné načítání nejprve pouze 5–10 MB místo načtení celého obrázku. Dále specifikujte Obrázek.LANCZOS pro vysoce kvalitní převzorkování, které je paměťově efektivní.
Polštář nativně podporuje více než 30 formátů včetně JPEG, PNG, TIFF, BMP, GIF, WebP a ICO. Podpora WebP v Pillow dosahuje o 25-35 % lepší komprese než JPEG při stejné kvalitě (na základě studií WebP společnosti Google). Chcete-li zkontrolovat všechny podporované formáty: z funkcí importu PIL; features.get_supported() .
Pro základní I/O a jednoduchou transformaci (změna velikosti, oříznutí, převod formátu), Polštář je o 15-30 % rychlejší než OpenCV na stejném hardwaru protože má nižší režii. Pro komplexní počítačové vidění (detekce funkcí, párování) je OpenCV lepší. Pro automatizaci dávkového zpracování obrazu vždy zvolte Polštář.
Použijte Image.alpha_composite() or .paste() s průhledným překrytím. Dávku 1000 obrázků (každý 2 MB) lze označit vodoznakem za ~45 sekund pomocí jednoduchého for-loop a metody Pillow's draw. Viz příklad kódu v části "Jak používat" pro strukturu.
Ano. Převod mezi poli Pillow a NumPy: np.array(img) a Image.fromarray(arr) . Tato integrace se používá v 85 % datových vědeckých obrazových kanálů (průzkumy Kaggle, 2024). Umožňuje bezproblémovou kombinaci I/O rychlosti Pillow s matematickými operacemi NumPy.
Chcete-li maximalizovat efektivitu Pillow, postupujte podle těchto pokynů podložených důkazů:
v souhrnu Polštář je definitivní řešení pro zpracování obrázků v Pythonu pro úkoly, které nevyžadují video v reálném čase nebo 3D transformace. Jeho kombinace rychlosti (~0,2 s na 12MP obrázek pro základní operace), podpory formátů (30 typů) a čistého API z něj dělá průmyslový standard pro automatizační skripty, webové backendy a kanály pro přípravu dat.