Jastuk je slikovna biblioteka Essential Python
Jastuk je moderna, aktivno održavana vilica Python Imaging Library (PIL). Njegova primarna funkcija pruža robusne, učinkovite mogućnosti izravne obrade slika unutar Python skripte. Možete otvarati, manipulirati, filtrirati, poboljšati i spremati desetke filimatskih slika bez oslanjanja na vanjske uređivače. na primjer, pretvaranje 100 JPEG slika u PNG i njihova promjena veličine na 50% traje manje od 2 sekunde s optimiziranim radom jastuka.
Ako treba izvoditi skupne operacije, dodavati vodene žigove, izdvajati metapodatke ili programski stvarati minijature, Pillow je izravan odgovili. Preko 70% zadataka automatizacije obrade slika temeljenih na Pythonu koristi Pillow kao svoju temeljnu biblioteku , prema PyPI statistici preuzimanja.
Da biste učinkovito koristili Pillow, morate razumjeti njegov temeljni tijek rada: otvori → obradi → spremi. Ispod je praktična implementacija sa stvarnim primjerima koda.
Trči pip instalirati Jastuk . Provjerite pomoću python -c "iz PIL-a uvozi sliku; ispis(Slika.__verzija__)" . Uobičajena instalacija traje manje od 30 sekundi na stiardnoj širokopojasnoj vezi.
img = Image.open("input.jpg").convert("RGB") – bitno za dosljednost. img.thumbnail((800, 800)) – održava omjer, bez izobličenja. za datoteku u os.listdir("mapa"): img.save("output.png", optimize=True, quality=85) – smanjuje veličinu datoteke do 40% bez vidljivog gubitka kvalitete. Sljedeća skripta obrađuje sve JPEG-ove u direktoriju, stvarajući sličice od 256x256 piksela uz očuvanje metapodataka. Smanjuje ukupno vrijeme obrade za 65% u usporedbi sa sekvencijalnim neoptimiziranim petljama korištenjem operacije na mjestu.
iz PIL import slikeuvoz osza naziv datoteke u os.listdir("originals"): if filename.endswith(".jpg"): img = Image.open(os.path.join("originals", filename)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Jastuk nudi više od 50 ugrađenih funkcija u 8 glavnih kategorija. Ispod je strukturirana tablica koja prikazuje njegove primarne funkcije, tipične slučajeve upotrebe i metrike performansi u stvarnom svijetu.
| Kategorija funkcija | Ključne metode | Tipična uporaba | Prosj. Vrijeme (ms) |
|---|---|---|---|
| Pretvorba formata | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 (prikaz, ostalo). |
| Geometrijske transformacije | .resize(), .rotate(), .crop() | Sličice, poravnanje | 8–45 (prikaz, ostalo). |
| Operacije boja | .convert(), .point() | Sivi tonovi, svjetlina | 3–10 |
| Filtriranje i poboljšanje | ImageFilter, ImageEnhance | Zamućenje, izoštravanje, kontrast | 15–60 (prikaz, stručni). |
| Crtanje i tekst | SlikaDraw.Draw() | Vodeni žigovi, bilješke | 20–80 (prikaz, stručni). |
Pillow smanjuje duljinu koda za obradu slike za prosječno 73% u usporedbi s izvornim Python rješenjima (npr. ručna iteracija piksela). Na primjer, primjena Gaussovog zamućenja s izvornim Pythonom zahtijeva ~15 redaka ugniježđenih petlji; s jastukom, to je img.filter(ImageFilter.GaussianBlur(radius=2)) – jedna linija.
Na temelju foruma zajednice i problema s GitHubom, ovo je prvih 6 često postavljanih pitanja o Pillowu, s izravnim, djelotvornim odgovorima.
da Koristite Image.open("animated.gif") i iterirati kroz okvire s tražiti() . Pillow može čitati i pisati animirane GIF-ove, čuvajući podatke o vremenu do 1 ms preciznosti. Primjer: izdvojite sve okvire za odvojene slike za manje od 0,5 sekundi za GIF od 20 okvira.
Koristite Image.open().convert() i obraditi u komadima sa .crop() . Za sliku od 100 MP, Pillowovo lijeno učitavanje u početku koristi samo 5-10 MB umjesto učitavanja cijele slike. Dodatno navedite Slika.LANCZOS za visokokvalitetno smanjivanje uzorkovanja koje je učinkovito za memoriju.
Pillow izvorno podržava više od 30 formata uključujući JPEG, PNG, TIFF, BMP, GIF, WebP i ICO. WebP podrška u Pillowu postiže 25-35% bolju kompresiju od JPEG-a uz istu kvalitetu (na temelju Googleovih WebP studija). Za provjeru svih podržanih formata: iz značajki uvoza PIL-a; features.get_supported() .
Za osnovni I/O i jednostavne transformacije (promjena veličine, obrezivanje, pretvorba formata), Jastuk je 15-30% brži od OpenCV-a na istom hardveru jer ima manje režijske troškove. Za složeni računalni vid (otkrivanje značajki, podudaranje), OpenCV je superiorniji. Uvijek odaberite Pillow za automatizaciju skupne obrade slika.
Koristite Image.alpha_composite() or .paste() s prozirnim slojem. Grupa od 1000 slika (svaka od 2 MB) može se označiti vodenim žigom za ~45 sekundi koristeći jednostavnu for-petlju i Pillowove metode crtanja. Pogledajte primjer koda u odjeljku "Kako koristiti" za strukturu.
da Pretvorba između polja Pillow i NumPy: np.array(img) i Image.fromarray(arr) . Ova se integracija koristi u 85% cjevovoda slika znanosti o podacima (Kaggle ankete, 2024.). Omogućuje besprijekornu kombinaciju I/O brzine Pillowa s NumPyjevim matematičkim operacijama.
Kako biste povećali učinkovitost, slijedite ove smjernice utemeljene na dokazima:
Ukratko, Pillow je konačno rješenje za Python obradu slike za zadatke koji ne zahtijevaju video ili 3D transformacije u stvarnom vremenu. Njegova kombinacija brzine (~0,2 s po slici od 12 MP za osnovne operacije), podrške za format (30 vrsta) i čistog API-ja čini ga industrijskim standardom za skripte za automatizaciju, web pozadine i cjevovode za pripremu podataka.