15 settembre 2010

PIL e il Modulo Image

Se intendete svolgere elaborazione grafica con il linguaggio Python, il modo professionale di
farlo e con la libreria grafica PIL di Fredrik Lundh(www.pythonware.com).

La libreria pil e in grado di lavorare con file RGB, RGBA, TIFF, PDF, BMP, JPEG, JPG, GIF, creazione di immagini animate FLI-FLC, gestire file di tipo PostScript, e tanto altro. Per una lettura esaustiva, non vi resta che puntare alla corposa documentazione.

Ecco degli esempi con il modulo Image della libreria PIL.

1)Creare una bitmap ex novo con del testo.

2)Scrivere o disegnare su di una immagine già esistente.
Nello specifico delle semplici linee.

3)Creare una Thumbnail da una immagine esistente.


>>> import Image # importo i moduli necessari
>>> import ImageDraw
>>> output = 'Python is Magic World' # il testo
>>> size = (200, 70) # setto la grandezza della bitmap
>>> color = (0, 128, 0) # setto il colore verde in valore RGB
>>> img = Image.new('RGB', size, color) # setto la grandezza e il colore alla bitmap
>>> imgDrawer = ImageDraw.Draw(img) # creo la bitmap
>>> imgDrawer.text((8, 22), output) # creo la grandezza del testo
>>> img.show() # stampa la bitmap

la prima bitmap










>>> import Image # qui come sopra inutile replicarmi ;-)
>>> import ImageDraw
>>> output = 'Python is Magic World'
>>> size = (300, 100)
>>> color = (0, 128, 0)
>>> img = Image.new('RGB', size, color)
>>> imgDrawer = ImageDraw.Draw(img)
>>> imgDrawer.text((12, 28), output)
>>> import random # importo il modulo random per poter disegnare le linee in modo casuale
>>> lines = [] # qui crea una serie di punti in modo casuale per le linee
>>> for i in xrange(5):
... lines.append((random.randrange(img.size[0]), # il metodo randrange del modulo random assegna in modo
... random.randrange(img.size[1]))) # casuale i punti delle coordinate x, y
...
>>> imgDrawer.line(lines) # disegna le linee
>>> img.show() # stampa la bitmap

la seconda bitmap







Questo esempio e un pochino diverso dagli esempi precedenti.


Mentre nei due esempi precedenti creavamo ex novo la bitmap, in questo esempio invece usiamo una immagine già esistente, nello specifico una immagine .png che ridimensioneremo con il metodo Thumbnail, sempre del modulo Image.

>>> import Image # importo il modulo
>>> image_path = r"C:\test\snake.png" # assegno l' immagine alla variabile tramite raw string (r"path\files")
>>> image = Image.open(image_path) # apro l'immagine
>>> width, height = (150, 110) # ridimensiono l'immagine l' originale era 300x350px
>>> size = (width, height) # assegno grandezza e altezza
>>> new_image_thumbnail = r"C:\test\snake_small.png" # che sia pitone grande o pitone piccolo l' importante che pitone è
>>> image.thumbnail(size, Image.ANTIALIAS) # creo la thumbnail vera e propria con antialias ma potevamo anche bicubic bilinear ecc
>>> image.save(new_image_thumbnail) # salvo la nuova immagine "thumbnail"

l'immagine originale





















e l'immagine thumbnail ridimensionata









ps.
credo che con del codice commentato in questa maniera(oserei dire quasi in modo elementare) sia facile per molti capire come funziona questo meraviglioso linguaggio che è python, e il modo di usare questa potente libreria per le immagini
che e PIL.

Nessun commento: