!

Dette materialet blir ikke lenger vedlikeholdt. Du vil finne oppdatert materiale på siden: http://borres.hiof.no/wep/

PIL
Python
Børre Stenseth
Python >Bilder

Python og bilder

Hva
behandling av bilder i Python

Vi har ofte behov for å manipulere bilder eller produsere bilder basert på data. Vi ønsker å levere illustrasjoner som lages "on-the-fly" når vi leverer fra tjeneren.

Det er utviklet et eget bildebehandlingsbibliotek for python som hjelper oss med dette: PIL (Python Imaging Library). [1]

Dokumentasjonen er direkte tilgjenelig herfra: PIL handbook

I denne modulen nøyer vi oss med to enkle eksempler som illustrerer et par av de mest grunnleggende funksjonene. Merk at PIL distribueres yten et rikt utvalg av fonter. Det finnes imidlertid et en pakke med fonter som kan brukes, se referanser. Pakk ut den refererte zip-fila og gjør katalogen pilfonts tilgjenglig for Pythonkoden.

sinuskurve

sinus

Pyhonkoden er slik

"""
Simple construction of sinus curve
"""
import Image,ImageDraw,ImageFont,ImageFilter
import math
# canvas size:
canW=200
canH=220
def getSinus():
    datalist=[]
    for ix in range(360):
        y=canH/2-round(math.sin(ix*2*math.pi/360.0)*100)
        datalist.append((ix*0.5,y))
    return datalist
def drawData(datalist):
    canvas=Image.new("RGB",(canW,canH),(255,255,255))    
    draw=ImageDraw.Draw(canvas)
    draw.line(datalist, fill=(0,0,0),width=2)
    canvas.save('demo.jpg')
    del draw
dta=getSinus()
drawData(dta)

Hest og tekst

sinus

Pyhonkoden er slik

"""
Simple demo of PIL
"""
import Image,ImageDraw,ImageFont,ImageFilter
#-------------------------
# constants
canW=400
canH=250
filename="demo1.jpg"
pilfontcat="pilfonts\\"
   
#---------------------------
# draw something
def drawImage2(imgfile):
    canvas=Image.new("RGB",(canW,canH),(255,255,255))
    draw=ImageDraw.Draw(canvas)
    im=Image.open(imgfile,mode='r')
    im1=im.resize((200,200))
    canvas.paste(im1,(10,50))
    im2=im.resize((100,70))
    canvas.paste(im2,(250,50))
    font=ImageFont.load(pilfontcat+'helvBO24.pil')
    draw.text((260,160),'Hesten',fill=(0,0,255),font=font)
    font=ImageFont.load(pilfontcat+'courBO24.pil')
    draw.text((260,210),'Hesten',fill=(255,0,0),font=font)
    del draw
    canvas.save(filename, "JPEG")
drawImage2('horse.jpg')

Referanser
  1. Python Imaging Library pythonware.com www.pythonware.com/products/pil/index.htm 14-03-2010
  1. Python Imaging Library Handbook pythonware.com www.pythonware.com/library/pil/handbook/index.htm 14-03-2010
Vedlikehold

B. Stenseth, desember 2008

( Velkommen ) Python >Bilder ( Open Office )