Ang Pillow ay ang Essential Python Imaging Library
Ang una ay ang moderno, pinananatili na tinido ng Python Imaging Library (PIL). Ang pangunahing tungkulin nito ay nagbibigay ng matatag, mahusay na mga kakayahan sa imahe nang direkta sa loob ng mga script ng Python. Maaari mong buksan, manipulahin, i-filter, pagatahin, at i-save ang dose-dosenang mga fomat ng larawan nang hindi umaasa sa mga panlabas na editor. Halimbawa, ang pag-convert ng 100 JPEG na imahe sa PNG at ang pagbabago ng laki ng mga ito sa 50% ay tumatagal ng mas mababa sa 2 segundo na may mga na-optimize na pagpapatakbo ng Pillow.
Kung kailangan mong magsagawa ng mga batch operation, magdagdag ng mga watermark, mag-extract ng metadata, o gumawa ng mga thumbnail sa programmatically, Pillow ang tanong na sagot. Higit sa 70% ng mga gawain sa pag-automate ng mga imahe na nakabatay sa Python ang paggamit ng Pillow bilang kanilang pangunahing library , ayon sa PyPI download statistics.
Upang magamit gamit ang Pillow, dapat mong maunawaan ang pangunahing daloy ng trabaho nito: bukas → proseso → i-save. Nasa ibaba ang isang praktikal na pagpapatupad na may mga tunay na halimbawa ng code.
Takbo pip install Pillow . I-verify gamit ang python -c "mula sa PIL import Image; print(Image.__version__)" . Ang karaniwang pag-install ay tumatagal ng mas mababa sa 30 segundo sa isang karaniwang koneksyon sa broadbat.
img = Image.open("input.jpg").convert("RGB") - mahalaga para sa pagkakapare-pareho. img.thumbnail((800, 800)) – nagpapanatili ng ratio, walang pagbaluktot. para sa file sa os.listdir("folder"): img.save("output.png", optimize=True, quality=85) – binabawasan ang laki ng file ng hanggang 40% nang walang nakikitang pagkawala ng kalidad. Pinoproseso ng sumusunod na script ang lahat ng JPEG sa isang direktoryo, na lumilikha ng mga thumbnail na 256x256 pixels habang pinapanatili ang metadata. Binabawasan nito ang kabuuang oras ng pagtatapos ng 65% kumpara sa mga sequential na hindi na-optimize na mga loop sa pamamagitan ng paggamit ng mga in-place na operasyon.
mula sa PIL import Imageimport ospara sa filename sa os.listdir("original"): kung 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}") Ang unan ay nagbibigay ng higit sa 50 built-in na function sa 8 pangunahing kategorya. Nasa ibaba ang isang structured na nagpapakita na nagpapakita ng mga pangunahing function nito, karaniwang mga kaso ng paggamit, at mga sukatan ng pagganap sa totoong mundo.
| Kategorya ng Function | Mga Pangunahing Pamamaraan | Karaniwang Paggamit | Avg. Oras (ms) |
|---|---|---|---|
| Pag-convert ng format | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Mga pagbabagong geometriko | .resize(), .rotate(), .crop() | Mga thumbnail, pagkakahanay | 8–45 |
| Mga pagpapatakbo ng kulay | .convert(), .point() | Grayscale, liwanag | 3–10 |
| Pag-filter at pagpapahusay | ImageFilter, ImageEnhance | Palabuin, patalasin, kaibahan | 15–60 |
| Pagguhit at teksto | ImageDraw.Draw() | Mga watermark, anotasyon | 20–80 |
Binabawasan ng unan ang haba ng code sa pagpoproseso ng imahe sa average na 73% kumpara sa mga native na solusyon sa Python (hal., manu-manong pag-ulit ng pixel). Halimbawa, ang paglalapat ng Gaussian blur na may katutubong Python ay nangyari ng ~15 linya ng mga nested loop; may Pillow, ito img.filter(ImageFilter.GaussianBlur(radius=2)) – isang linya.
Batay sa mga forum ng komunidad at isyu sa GitHub, ito ang nagtanong 6 na madalas itanong tungkol sa Pillow, na may mga nagpapadala ng sagot na naaaaksyunan.
Oo. Gamitin Image.open("animated.gif") at umulit sa pamamagitan ng mga frame na may humanap() . Ang unan ay maaaring magbasa at magsulat ng mga animated na GIF, na pinapanatili ang data ng timing hanggang sa 1ms precision. Halimbawa: i-extract ang lahat ng mga frame upang ihiwalay ang mga larawan sa ilalim ng 0.5 segundo para sa isang 20-frame na GIF.
Gamitin Image.open().convert() at iproseso sa mga tipak na may .crop() . Para sa isang 100MP na imahe, ang tamad na pag-load ng Pillow ay gumagamit lamang ng 5-10MB sa simula sa halip na i-load ang buong larawan. Bukod pa rito, tukuyin Larawan.LANCZOS para sa mataas na kalidad na downsampling na mahusay sa memorya.
Ang unan ay katutubong sumusuporta sa higit sa 30 mga format kabilang ang JPEG, PNG, TIFF, BMP, GIF, WebP, at ICO. Ang suporta sa WebP sa Pillow ay nakakamit ng 25-35% na mas mahusay na compression kaysa sa JPEG sa parehong kalidad (batay sa mga pag-aaral sa WebP ng Google). Upang suriin ang lahat ng sinusuportahang format: mula sa mga tampok ng pag-import ng PIL; features.get_supported() .
Para sa pangunahing I/O at mga simpleng pagbabago (baguhin ang laki, pag-crop, pag-convert ng format), Ang una ay 15-30% na mas mabilis kaysa sa OpenCV sa parehong hardware dahil mas mababa ang overhead nito. Para sa kumpletong computer vision (feature detection, matching), ang OpenCV ay mas mataas. Palaging piliin ang Pillow para sa batch na pagpoproseso ng imahe ng automation.
Gamitin Image.alpha_composite() or .paste() na may isang transparent na overlay. Maaaring ma-watermark ang isang batch ng 1000 larawan (bawat 2MB) sa loob ng ~45 segundo gamit ang isang simpleng para-loop at mga paraan ng pagguhit ng Pillow. Tingnan ang halimbawa ng code sa ilalim ng seksyong "Paano Gamitin" para sa istruktura.
Oo. Mag-convert sa pagitan ng Pillow at NumPy array: np.array(img) and Image.fromarray(arr) . Ang integration na ito ay ginagamit sa 85% ng data science image pipelines (Mga survey ng Kaggle, 2024). ipinatupad nito ang tuluy-tuloy na kumbinasyon ng bilis ng I/O ng Pillow sa mga mathematical na operasyon ng NumPy.
Upang mapakinabangan ang kahusayan ng Pillow, sundin ang mga alituntuning ito na nakabatay sa ebidensya:
Sa buod, Ang una ay ang tiyak na solusyon para sa imahe ng Python para sa mga gawain na hindi nangyayari ng real-time na video o 3D na pagbabago. Ang kumbinasyon ng bilis nito (~0.2s bawat 12MP na larawan para sa mga pangunahing operasyon), suporta sa format (30 uri), at malinis na API ay ginagamit itong pamantayan sa industriya para sa mga automation script, web backend, at pipeline sa paghahanda ng data.