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
