Pillow är Essential Python Imaging Library
Pillow är den moderna, aktivt underhållna i Python Imaging Library (PIL). Dess primära funktion är att tillhochahålla robusta, effektiva bildbehochlingsmöjligheter direkt i Python-skript. Du kan öppna, manipulera, filtrera, förbättra och spara dussintals bildfellermat utan att förlita dig på externa redigerare. Till exempel, Att konvertera 100 JPEG-bilder till PNG och ändra stellerlek på dem till 50 % för mindre än 2 sekunder med optimerad kuddfunktion.
Om du behöver utföra batchoperationer, lägg till vattenstämplar, extrahera metadata eller skapa miniatyrer programmatiskt är Pillow det direkta svaret. Över 70 % av Python-baserade bildbehandlingsautomatiseringsuppgifter använder Pillow som sitt kärnbibliotek , enligt PyPI nedladdningsstatistik.
För att använda Pillow effektivt måste du förstå dess kärnarbetsflöde: öppna → process → spara. Nedan är en praktisk implementering med riktiga kodexempel.
Kör pip installera Kudde . Verifiera med python -c "från PIL import bild; print(Image.__version__)" . Normal installation tar mindre än 30 sekunder på en vanlig bredbandsanslutning.
img = Image.open("input.jpg").convert("RGB") – väsentligt för konsekvens. img.thumbnail((800, 800)) – bibehåller förhållandet, ingen förvrängning. för fil i os.listdir("mapp"): img.save("output.png", optimize=True, quality=85) – minskar filstorleken med upp till 40 % utan synlig kvalitetsförlust. Följande skript bearbetar alla JPEG-filer i en katalog och skapar miniatyrer på 256x256 pixlar samtidigt som metadata bevaras. Det minskar den totala bearbetningstiden med 65 % jämfört med sekventiella ooptimerade slingor genom att använda operationer på plats.
från PIL import bildimportera osför filnamn i os.listdir("originaler"): if filename.endswith(".jpg"): img = Image.open(os.path.join("original", filnamn)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Kudde har över 50 inbyggda funktioner i 8 huvudkategorier. Nedan finns en strukturerad tabell som visar dess primära funktioner, typiska användningsfall och verkliga prestandamått.
| Funktionskategori | Nyckelmetoder | Typisk användning | Genomsnittlig Tid (ms) |
|---|---|---|---|
| Formatkonvertering | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Geometriska transformationer | .resize(), .rotate(), .crop() | Miniatyrer, justering | 8–45 |
| Färgoperationer | .convert(), .point() | Gråskala, ljusstyrka | 3–10 |
| Filtrering och förbättring | ImageFilter, ImageEnhance | Oskärpa, skärpa, kontrastera | 15–60 |
| Teckning & text | ImageDraw.Draw() | Vattenstämplar, anteckningar | 20–80 |
Kudde minskar bildbehandlingskodens längd med i genomsnitt 73 % jämfört med inbyggda Python-lösningar (t.ex. manuell pixelimerering). Till exempel, att applicera en Gaussisk oskärpa med inbyggd Python kräver ~15 rader med kapslade loopar; med kudde, det är img.filter(ImageFilter.GaussianBlur(radius=2)) – en rad.
Baserat på community-forum och GitHub-problem, är dessa sex vanligaste frågor om Pillow, med direkta, handlingsbara svar.
Ja. Använd Image.open("animated.gif") och iterera genom ramar med söka() . Pillow kan läsa och skriva animerade GIF-filer, vilket bevarar tidsdata upp till 1 ms precision. Exempel: extrahera alla bildrutor för att separera bilder på mindre än 0,5 sekunder för en 20-bilds GIF.
Använd Image.open().convert() och bearbeta i bitar med .crop() . För en 100 MP-bild används Pillows lata laddning endast 5-10 MB initialt istället för att ladda hela bilden. Ange dessutom Image.LANCZOS för högkvalitativ nedsampling som är minneseffektiv.
Kudde stöder naturligt över 30 format inklusive JPEG, PNG, TIFF, BMP, GIF, WebP och ICO. WebP-stöd i Pillow uppnår 25-35% bättre komprimering än JPEG vid samma kvalitet (baserat på Googles WebP-studier). Så här kontrollerar du alla format som stöds: från PIL-importfunktioner; features.get_supported() .
För grundläggande I/O och enkla transformationer (ändra storlek, beskära, formatkonvertering), Pillow är 15-30% snabbare än OpenCV på samma hårdvara eftersom den har lägre overhead. För komplex datorseende (funktionsdetektering, matchning) är OpenCV överlägset. Välj alltid Pillow för batch-bildbehandlingsautomatisering.
Använd Image.alpha_composite() or .paste() med ett genomskinligt överdrag. En sats på 1000 bilder (vardera 2MB) kan vattenmärkas på ~45 sekunder med en enkel for-loop och Pillows ritmetoder. Se kodexemplet under avsnittet "Hur man använder" för struktur.
Ja. Konvertera mellan pillow och NumPy arrayer: np.array(img) and Image.fromarray(arr) . Denna integration används i 85 % av datavetenskapliga bildpipelines (Kaggle-undersökningar, 2024). Det krävs en sömlös kombination av Pillows I/O-hastighet med NumPys matematiska operationer.
För att maximera Pillows effektivitet, följ dessa evidensbaserade riktlinjer:
Sammanfattningsvis, Pillow är den definitiva lösningen för Python-bildbehandling för uppgifter som inte kräver realtidsvideo eller 3D-transformationer. Dess kombination av hastighet (~0,2 s per 12 MP-bild för grundläggande operationer), formatstöd (30 typer) och rena API gör den till industristandarden för automatiseringsskript och dataförberedande pipelines.