Pillow on Essential Python Imaging Library
Pillow on Python Imaging Libraryn (PIL) moderni, aktiivisesti ylläpidetty haarukka. Sen ensisijainen tehtävä on tarjota vankat ja tehokkaat kuvankäsittelyominaisuudet sutaiaan Python-skriptien sisällä. Voit avata, käsitellä, suodattaa, parantaa ja tallentaa kymmeniä kuvamuotoja turvautumatta ulkoisiin muokkaajiin. Esimerkiksi 100 JPEG-kuvan muuntaminen PNG-muotoon ja niiden koon muuttaminen 50 %:ksi kestää alle 2 sekuntia optimoiduilla tyynytoiminnoilla.
Jos sinun on suoritettava erätoimintoja, lisättävä vesileimoja, poimittava metatietoja tai luotava pikkukuvia ohjelmallisesti, Pillow on suora vastaus. Yli 70 % Python-pohjaisista kuvankäsittelyn automaatiotehtävistä käyttää Pillowia ydinkirjastonaan PyPI-lataustilastojen mukaan.
Käyttääksesi Pillowia tehokkaasti sinun on ymmärrettävä sen ydintyönkulku: avaa → käsittele → tallenna. Alla on käytännön toteutus oikeilla koodiesimerkeillä.
Juokse pip install Pillow . Vahvista sovelluksella python -c "PIL-tuontikuvasta; print(Image.__version__)" . Tyypillinen asennus kestää alle 30 sekuntia tavallisella laajakaistayhteydellä.
img = Image.open("input.jpg").convert("RGB") – välttämätön johdonmukaisuuden kannalta. img.thumbnail((800, 800)) – säilyttää suhteen, ei vääristymiä. tiedostolle os.listdir("kansio"): img.save("output.png", optimize=True, quality=85) – pienentää tiedostokokoa jopa 40 % ilman näkyvää laadun heikkenemistä. Seuraava komentosarja käsittelee kaikki hakemiston JPEG-tiedostot ja luo 256 x 256 pikselin pikkukuvat metatiedot säilyttäen. Se lyhentää kokonaiskäsittelyaikaa 65 % verrattuna peräkkäisiin optimoimattomiin silmukoihin käyttämällä paikan päällä tapahtuvaa toimintaa.
PIL-tuontikuvastatuonti ostiedostonimelle os.listdir("originals"): jos tiedostonimi.endswith(".jpg"): img = Image.open(os.path.join("alkuperäiset", tiedostonimi)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Pillow tarjoaa yli 50 sisäänrakennettua toimintoa 8 pääkategoriassa. Alla on jäsennelty taulukko, joka näyttää sen ensisijaiset toiminnot, tyypilliset käyttötapaukset ja todelliset suorituskykymittarit.
| Toimintoluokka | Keskeiset menetelmät | Tyypillinen käyttö | Keskim. Aika (ms) |
|---|---|---|---|
| Muodin muuntaminen | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12-35 |
| Geometriset muunnokset | .resize(), .rotate(), .crop() | Pikkukuvat, tasaus | 8–45 |
| Väritoiminnot | .convert(), .point() | Harmaasävy, kirkkaus | 3–10 |
| Suodatus ja parannus | ImageFilter, ImageEnhance | Sumentaa, terävöittää, kontrastia | 15-60 |
| Piirustus & teksti | ImageDraw.Draw() | Vesileimat, huomautukset | 20-80 |
Pillow vähentää kuvankäsittelykoodin pituutta keskimäärin 73 % verrattuna alkuperäisiin Python-ratkaisuihin (esim. manuaalinen pikselien iterointi). Esimerkiksi Gaussin sumennuksen käyttäminen alkuperäisellä Pythonilla vaatii ~15 riviä sisäkkäisiä silmukoita; tyynyn kanssa, se on img.filter(ImageFilter.GaussianBlur(säde=2)) - yksi rivi.
Yhteisön keskustelupalstoihin ja GitHub-ongelmiin perustuen nämä ovat kuusi yleisintä Pillowia koskevaa kysymystä, joihin on suorat ja käytännölliset vastaukset.
Kyllä. Käytä Image.open("animoitu.gif") ja iteroida kehysten läpi etsi () . Pillow voi lukea ja kirjoittaa animoituja GIF-kuvia ja säilyttää ajoitustiedot jopa 1 ms:n tarkkuudella. Esimerkki: pura kaikki kehykset erottaaksesi kuvat alle 0,5 sekunnissa 20 ruudun GIF:lle.
Käytä Image.open().convert() ja käsittele paloina .crop() . 100 megapikselin kuvassa Pillown laiska lataus käyttää aluksi vain 5-10 Mt. koko kuvan lataamisen sijaan. Lisäksi täsmennä Image.LANCZOS korkealaatuista muistia säästävää alinäytteistystä.
Pillow tukee yli 30 muotoa, mukaan lukien JPEG, PNG, TIFF, BMP, GIF, WebP ja ICO. WebP-tuki Pillowissa saavuttaa 25-35 % paremman pakkauksen kuin JPEG samalla laadulla (perustuu Googlen WebP-tutkimuksiin). Voit tarkistaa kaikki tuetut formaatit seuraavasti: alkaen PIL tuonti ominaisuuksia; features.get_supported() .
Perus-I/O- ja yksinkertaiset muunnokset (koon muuttaminen, rajaaminen, muodon muuntaminen) Tyyny on 15-30 % nopeampi kuin OpenCV samalla laitteistolla koska sillä on alhaisemmat yleiskustannukset. Monimutkaisessa tietokonenäössä (ominaisuuksien havaitseminen, täsmääminen) OpenCV on ylivoimainen. Valitse aina Pillow eräkuvankäsittelyn automaatioon.
Käytä Image.alpha_composite() or .paste() läpinäkyvällä päällysteellä. 1000 kuvan erä (kukin 2 Mt) voidaan merkitä vesileimalla ~45 sekunnissa käyttämällä yksinkertaista for-loop- ja Pillow's draw -menetelmiä. Katso koodiesimerkki kohdasta "Kuinka käyttää" -osion rakennetta varten.
Kyllä. Muunna Pillow- ja NumPy-taulukoiden välillä: np.array(img) ja Image.fromarray(arr) . Tätä integraatiota käytetään 85 %:ssa datatieteen kuvaputkistosta (Kaggle-tutkimukset, 2024). Se mahdollistaa Pillown I/O-nopeuden saumattoman yhdistämisen NumPyn matemaattisiin operaatioihin.
Maksimoi Pillowin tehokkuus noudattamalla näitä näyttöön perustuvia ohjeita:
Yhteenvetona, Pillow on lopullinen ratkaisu Python-kuvankäsittelyyn tehtäviin, jotka eivät vaadi reaaliaikaista videokuvaa tai 3D-muunnoksia. Sen nopeuden (n. 0,2 s per 12 megapikselin kuva perustoimintoihin), muototuen (30 tyyppiä) ja puhtaan API:n yhdistelmä tekee siitä alan standardin automaatiokomentosarjoille, web-taustaohjelmille ja tietojen valmisteluputkille.