Pillow
je moćna Python biblioteka za rad sa slikama. Omogućava otvaranje, obradu, modifikaciju i konverziju različitih formata slika, kao i crtanje po slikama.
Instalacija Pillow
biblioteke je jednostavna i zavisi od toga da li koristiš pip
ili sistemske pakete. Pošto koristiš Linux (Ubuntu), evo nekoliko načina da ga instaliraš:
1. Instalacija pomoću pip
(preporučeno)
Najlakši i najčešći način je preko pip
:
pip install Pillow
Ako želiš da ažuriraš na najnoviju verziju:
pip install --upgrade Pillow
2. Instalacija preko apt
(Ubuntu/Debian)
Ako koristiš sistemske pakete, možeš ga instalirati ovako:
sudo apt update sudo apt install python3-pil
Ovo će instalirati Pillow
, ali obično u starijoj verziji.
3. Provera instalacije
Možeš proveriti da li je Pillow
uspešno instaliran pokretanjem:
python3 -c "from PIL import Image; print(Image.__version__)"
Ako prikaže verziju (10.x.x
ili slično), instalacija je uspešna. 🚀
Ako imaš problema sa zavisnostima, možeš ih instalirati pomoću:
sudo apt install libjpeg-dev zlib1g-dev
(pa ponovo instalirati Pillow
preko pip
).
Mogućnosti Pillow biblioteke
- Otvaranje i prikazivanje slika
- Konverzija formata slika
- Promena veličine i obrezivanje
- Rotacija i ogledanje
- Promena osvetljenja, kontrasta i filtriranje
- Dodavanje teksta i crtanje po slikama
- Ekstrakcija metapodataka
- Rad sa animiranim GIF-ovima
- Rad sa maskama i transparentnošću
- Sažimanje i optimizacija slika
Osnovne operacije i primeri
1. Otvaranje i prikazivanje slike
from PIL import Image img = Image.open("slika.jpg") img.show()
(Prikazuje sliku pomoću podrazumevanog pregledača slika.)
2. Konverzija formata slike
img = Image.open("slika.jpg") img.save("slika.png") # Konvertuje JPEG u PNG
3. Promena veličine slike
img = Image.open("slika.jpg") img_resized = img.resize((200, 300)) # Novi dimenzije (širina, visina) img_resized.save("slika_resized.jpg")
4. Obrezivanje slike (Crop)
img = Image.open("slika.jpg") cropped = img.crop((50, 50, 200, 200)) # (levo, gore, desno, dole) cropped.save("slika_cropped.jpg")
5. Rotacija i ogledanje
img = Image.open("slika.jpg") img_rotated = img.rotate(45) # Rotacija za 45 stepeni img_flipped = img.transpose(Image.FLIP_LEFT_RIGHT) # Horizontalno ogledalo img_rotated.save("slika_rotirana.jpg") img_flipped.save("slika_ogledalo.jpg")
6. Promena osvetljenja i kontrasta
from PIL import ImageEnhance img = Image.open("slika.jpg") # Povećanje osvetljenja (1.0 je original, 2.0 je duplo jače) enhancer = ImageEnhance.Brightness(img) bright_img = enhancer.enhance(1.5) bright_img.save("slika_osvetljena.jpg") # Pojačavanje kontrasta enhancer = ImageEnhance.Contrast(img) contrast_img = enhancer.enhance(2.0) contrast_img.save("slika_kontrast.jpg")
7. Primena filtera (Blur, Sharpen, Edge Enhancement)
from PIL import ImageFilter img = Image.open("slika.jpg") img_blur = img.filter(ImageFilter.BLUR) img_sharp = img.filter(ImageFilter.SHARPEN) img_blur.save("slika_zamagljena.jpg") img_sharp.save("slika_izostrena.jpg")
8. Dodavanje teksta na sliku
from PIL import ImageDraw, ImageFont img = Image.open("slika.jpg") draw = ImageDraw.Draw(img) font = ImageFont.truetype("arial.ttf", 40) # Potrebno je da postoji font fajl draw.text((50, 50), "Pozdrav!", fill="white", font=font) img.save("slika_tekst.jpg")
9. Ekstrakcija metapodataka
from PIL import Image img = Image.open("slika.jpg") exif_data = img._getexif() if exif_data: for tag, value in exif_data.items(): print(f"{tag}: {value}")
(Ovo prikazuje metapodatke, poput modela kamere i GPS lokacije.)
10. Rad sa animiranim GIF-ovima
img = Image.open("animacija.gif") for i, frame in enumerate(ImageSequence.Iterator(img)): frame.save(f"frame_{i}.png") # Čuva svaki frejm kao PNG