Pillow er Essential Python Imaging Library
Pillow er den moderne, aktivt vedlikeholdt gaffelen til Python Imaging Library (PIL). Dens primære funksjon er å gi robuste, effektive bildebehoglingsmuligheter direkte i Python-skript. Du kan åpne, manipulere, filtrere, lagre, bedre og dusinvis av bildefellermater uten å stole på eksterne redaktører. For eksempel å konvertere 100 JPEG-bilder til PNG og endre størrelsen på dem til 50 % for mindre enn 2 sekunder med optimaliserte puteoperasjoner.
Hvis du trenger å utføre batchoperasjoner, legge til vannmerker, trekke ut metadata eller lage programmatiske miniatyrbilder, er Pillow det direkte svaret. Over 70 % av Python-baserte bildebehoglingsautomatiseringsoppgaver bruker Pillow som kjernebibliotek , ifølge PyPI nedlastingsstatistikk.
For å bruke Pillow effektivt, må du forstå dens kjernearbeidsflyt: åpen → prosess → lagre. Nedenfor er en praktisk implementering med ekte kodeeksempler.
Løp pip-installatør Pute . Bekreft med python -c "fra PIL importer bilde; print(Image.__version__)" . Vanlig installasjon tar mindre enn 30 sekunder på en standard bredbåndsforbindelse.
img = Image.open("input.jpg").convert("RGB") – beslutning for konsistens. img.thumbnail((800, 800)) – forbruker forholdet, ingen forvrengning. for fil i os.listdir("mappe"): img.save("output.png", optimize=True, quality=85) – redusert filstørrelse med opptil 40 % uten synlig kvalitetsstap. Følgende skript behandler alle JPEG-er i en katalog, og lager miniatyrbilder på 256 x 256 piksler samtidig som metadata bevares. Det reduserer den totale behandlingstiden med 65 % sammenlignet med sekvensielle ikke-optimaliserte sløyfer ved å bruke operasjoner på stedet.
fra PIL import bildeimportere osfor filnavn i os.listdir("originals"): if filename.endswith(".jpg"): img = Image.open(os.path.join("originals", filnavn)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Pillow har over 50 innebygde funksjoner i 8 hovedkategorier. Nedenfor er en strukturert tabell som viser dens primære funksjoner, typiske brukstilfeller og virkelig ytelsesmålinger.
| Funksjonskategori | Nøkkelmetoder | Typisk bruk | Gj.sn. Tid (ms) |
|---|---|---|---|
| Formatkonvertering | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Geometriske transformasjoner | .resize(), .rotate(), .crop() | Miniatyrbilder, justering | 8–45 |
| Fargeoperasjoner | .convert(), .point() | Gråtoner, lysstyrke | 3–10 |
| Filtrering og forbedring | ImageFilter, ImageEnhance | Uskarp, skarphet, kontrast | 15–60 |
| Tegning og tekst | ImageDraw.Draw() | Vannmerker, merknader | 20–80 |
Pute reduserer bildebehandlingskodelengden med gjennomsnittlig 73 % sammenlignet med native Python-løsninger (f.eks. manuell pikseliterasjon). For eksempel, bruk av en Gaussisk uskarphet med opprinnelig Python krever ~15 linjer med nestede løkker; med Pillow, er det img.filter(ImageFilter.GaussianBlur(radius=2)) – én linje.
Basert på fellesskapsfora og GitHub-problemer, er dette de 6 mest stilte spørsmålene om Pillow, med direkte, handlingsrettede svar.
Ja. Bruk Image.open("animated.gif") og iter gjennom rammer med søk() . Pillow kan lese og skrive animerte GIF-er, og bevare tidsdata på opptil 1 ms presisjon. Eksempel: trekk ut alle rammer for å skille bilder på under 0,5 sekunder for en 20-rammers GIF.
Bruk Image.open().convert() og behandle i biter med .crop() . For et 100 MP-bilde bruker Puter late lasting kun 5-10 MB til å begynne med i stedet for å laste inn hele bildet. Spesifiser i tillegg Bilde.LANCZOS for høykvalitets nedsampling som er minneeffektiv.
Pute naturlig over 30 formater, inkludert JPEG, PNG, TIFF, BMP, GIF, WebP og ICO. WebP-støtte i Pillow oppnår 25-35 % bedre komprimering enn JPEG ved samme kvalitet (basert på Googles WebP-studier). Slik kontrollerer du alle støttede formater: fra PIL import funksjoner; features.get_supported() .
For grunnleggende I/O og enkle transformasjoner (endre størrelse, beskjæring, formatkonvertering), Pillow er 15-30 % raskere enn OpenCV på samme maskinvare fordi den har lavere overhead. For kompleks datasyn (funksjonsdeteksjon, matching) er OpenCV overlegen. Velg alltid Pillow for batch bildebehandlingsautomatisering.
Bruk Image.alpha_composite() or .paste() med et gjennomsiktig overlegg. En gruppe på 1000 bilder (hver 2MB) kan vannmerke på ~45 sekunder ved å bruke en enkel for-løkke og Pillows trekkmetoder. Se kodeeksempelet under "Hvordan bruke"-delen for struktur.
Ja. Konverter mellom Pillow og NumPy-matriser: np.array(img) and Image.fromarray(arr) . Denne integrasjonen brukes i 85 % av datavitenskapelige bildepipelines (Kaggle-undersøkelser, 2024). Den tillater sømløs kombinasjon av Puter I/O-hastighet med NumPys matematiske operasjoner.
For å maksimere Pillows effektivitet, følg disse evidensbaserte retningslinjene:
Oppsummert, Pillow er den definitive løsningen for Python-bildebehandling for oppgaver som ikke krever sanntidsvideo eller 3D-transformasjoner. Kombinasjonen av hastighet (~0,2 s per 12 MP-bilde for grunnleggende operasjoner), formatstøtte (30 typer) og ren API den til bransjestandarden for automatiseringsskript, web-backends og dataforberedelsespipelines.